diff --git a/backend/routes/auth/signup.js b/backend/routes/auth/signup.js index 0196a79..20acbf6 100644 --- a/backend/routes/auth/signup.js +++ b/backend/routes/auth/signup.js @@ -3,7 +3,8 @@ const router = express.Router(); const defineUser = require("../../models/users"); const { DataTypes } = require("sequelize"); const roles = require("./roles"); -const bcrypt = require('bcrypt'); +const bcrypt = require("bcrypt"); +const jwt = require("jsonwebtoken"); module.exports = function (sequelize) { const User = defineUser(sequelize, DataTypes); @@ -19,14 +20,20 @@ module.exports = function (sequelize) { ? roles.findIndex((entry) => entry.uid === "user") : roles.findIndex((entry) => entry.uid === "admin"); - await User.create({ + const user = await User.create({ email, password: hashedPassword, username: username, role: initialRole, avatarPath: null, }); - res.status(201).json({ message: "User registered successfully" }); + + const accessToken = jwt.sign({ userId: user.id }, "your-secret-key", { + expiresIn: "1h", + }); + + user.password = undefined;; + res.status(200).json({ access_token: accessToken, user }); } catch (error) { console.error(error); res.status(500).send("Sign up failed"); diff --git a/frontend/messages/ja.json b/frontend/messages/ja.json index 1c10f55..4b41664 100644 --- a/frontend/messages/ja.json +++ b/frontend/messages/ja.json @@ -39,8 +39,8 @@ "password_not_match": "パスワードが一致しません", "email_already_exist": "登録済みのメールアドレスです", "email_not_exist": "メールアドレスが見つかりません", - "signup_error": "新規登録できません", - "signin_error": "サインインできません" + "signup_error": "新規登録に失敗しました", + "signin_error": "サインインに失敗しました" }, "Projects": { "projectList": "プロジェクト一覧", diff --git a/frontend/src/app/[locale]/auth/authControl.ts b/frontend/src/app/[locale]/auth/authControl.ts index ba8db42..f7470c0 100644 --- a/frontend/src/app/[locale]/auth/authControl.ts +++ b/frontend/src/app/[locale]/auth/authControl.ts @@ -18,10 +18,10 @@ async function signUp(newUser: UserType) { if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } - const data = await response.json(); - return data; + const accessToken = await response.json(); + storeToken(accessToken); } catch (error: any) { - console.error("Error creating sign up:", error); + console.error("Error sign up:", error); throw error; } } @@ -42,12 +42,20 @@ async function signIn(signInUser: UserType) { if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } - const data = await response.json(); - return data; + const accessToken = await response.json(); + storeToken(accessToken); } catch (error: any) { console.error("Error sign in:", error); throw error; } } -export { signUp, signIn }; +function storeToken(accessToken: Object) { + localStorage.setItem("testplat-auth-token", JSON.stringify(accessToken)); +} + +function signOut() { + localStorage.removeItem("testplat-auth-token"); +} + +export { signUp, signIn, signOut }; diff --git a/frontend/src/app/[locale]/auth/authPage.tsx b/frontend/src/app/[locale]/auth/authPage.tsx index 1488f3c..3f7a682 100644 --- a/frontend/src/app/[locale]/auth/authPage.tsx +++ b/frontend/src/app/[locale]/auth/authPage.tsx @@ -58,13 +58,19 @@ export default function AuthPage({ isSignup, messages, locale }: Props) { const submit = async () => { if (isSignup) { - const signUpRet = await signUp(user); - console.log(signUpRet); - // if success, move to signin page + try { + await signUp(user); + // Move to signin page + } catch { + setErrorMessage(messages.signupError); + } } else { - const signInRet = await signIn(user); - console.log(signInRet); - // if success, move to account page + try { + signIn(user); + // Move to signin page + } catch { + setErrorMessage(messages.signinError); + } } };