Implement Auth account dropdown

This commit is contained in:
Takeshi Kimata
2024-05-19 13:33:08 +09:00
parent 3d141cf05b
commit a5b218f55e
11 changed files with 172 additions and 66 deletions

View File

@@ -18,9 +18,8 @@ async function signUp(newUser: UserType) {
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
const accessToken = await response.json();
storeToken(accessToken);
return accessToken;
const token = await response.json();
return token;
} catch (error: any) {
console.error("Error sign up:", error);
throw error;
@@ -43,21 +42,12 @@ async function signIn(signInUser: UserType) {
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
const accessToken = await response.json();
storeToken(accessToken);
return accessToken;
const token = await response.json();
return token;
} catch (error: any) {
console.error("Error sign in:", error);
throw error;
}
}
function storeToken(accessToken: Object) {
localStorage.setItem("testplat-auth-token", JSON.stringify(accessToken));
}
function signOut() {
localStorage.removeItem("testplat-auth-token");
}
export { signUp, signIn, signOut };
export { signUp, signIn };

View File

@@ -9,6 +9,8 @@ import { roles } from "@/config/selection";
import { signUp, signIn } from "./authControl";
import { isValidEmail, isValidPassword } from "./validate";
import { TokenContext } from "../TokenProvider";
import { useRouter } from "@/src/navigation";
type Props = {
isSignup: Boolean;
messages: AuthMessages;
@@ -16,6 +18,7 @@ type Props = {
};
export default function AuthPage({ isSignup, messages, locale }: Props) {
const router = useRouter();
const context = useContext(TokenContext);
const [user, setUser] = useState<UserType>({
id: null,
@@ -59,30 +62,36 @@ export default function AuthPage({ isSignup, messages, locale }: Props) {
};
const submit = async () => {
let token;
if (isSignup) {
try {
const token = await signUp(user);
context.setToken(token);
// Move to signin page
token = await signUp(user);
} catch {
setErrorMessage(messages.signupError);
return;
}
} else {
try {
const token = await signIn(user);
context.setToken(token);
// Move to signin page
token = await signIn(user);
} catch {
setErrorMessage(messages.signinError);
return;
}
}
context.setToken(token);
context.storeTokenToLocalStorage(token);
router.push("/account", { locale: locale });
};
return (
<Card className="border-none bg-background/60 dark:bg-default-100/50 w-[480px]">
<CardHeader className="px-4 pt-4 pb-0 flex justify-between">
<h4 className="font-bold text-large">{messages.title}</h4>
<Link href={isSignup ? "/auth/signin" : "/auth/signup"} locale={locale}>
<Link
href={isSignup ? "/account/signin" : "/account/signup"}
locale={locale}
>
<Button
color="primary"
variant="light"