import { ReqHandler } from "@ethicdevs/react-monolith";
import { buildRouteLink } from "../../../utils/shared";
import { makeUsersService } from "../../../services/user";
import { AppRoute, AppRouteParams } from "../../../routes.defs";
const postKeyAddAction: ReqHandler<
AppRouteParams,
AppRoute.SETTINGS_KEY_ADD_ACTION
> = async (request, reply) => {
const { curr_user_username } = request.session.data;
if (curr_user_username == null) {
return reply.status(404).callNotFound();
}
const usersService = makeUsersService({ request });
const user = await usersService.getUserByUsername(curr_user_username);
if (user == null) {
return reply.status(404).callNotFound();
}
const { username } = request.params;
const { name, key } = request.body;
try {
await usersService.addUserSSHKey(user, name, key);
} catch (err) {
const error = err as Error;
request.session.data.flash_message = error.message;
request.session.data.flash_data = {
keyName: name,
key: key,
};
}
if (request.session.data.flash_message != null) {
return reply.redirect(
302,
buildRouteLink(
AppRoute.SETTINGS_KEY_ADD,
{ username },
{ encodeURIComponent: 0 }
)
);
}
return reply.redirect(
302,
buildRouteLink(AppRoute.SETTINGS, { username }, { encodeURIComponent: 0 })
);
};
export default postKeyAddAction;