forked from Transparency/kgroad-frontend2
.
This commit is contained in:
1 parent
bb852f5119
commit
eeb9cc7ff8
92 files changed
+2076
-279
No files matched your search
@@ -0,0 +1,91 @@
|
||||
import axios from "axios";
|
||||
import NextAuth, { NextAuthOptions } from "next-auth";
|
||||
import { JWT } from "next-auth/jwt";
|
||||
import CredentialsProvider from "next-auth/providers/credentials";
|
||||
|
||||
interface IToken {
|
||||
access: string;
|
||||
}
|
||||
|
||||
const refreshToken = async (token: JWT): Promise<JWT> => {
|
||||
const data = {
|
||||
refresh: token.refresh_token,
|
||||
};
|
||||
|
||||
const response = await axios.post<IToken>(
|
||||
"https://api.kgroaduat.fishrungames.com/api/v1/token/refresh/",
|
||||
data
|
||||
);
|
||||
|
||||
return {
|
||||
...token,
|
||||
access_token: response.data.access,
|
||||
};
|
||||
};
|
||||
|
||||
export const authOptions: NextAuthOptions = {
|
||||
providers: [
|
||||
CredentialsProvider({
|
||||
name: "Credentials",
|
||||
credentials: {
|
||||
email: {
|
||||
label: "Email",
|
||||
type: "text",
|
||||
placeholder: "jsmith@example.com",
|
||||
},
|
||||
password: { label: "Password", type: "password" },
|
||||
},
|
||||
async authorize(credentials, req) {
|
||||
if (!credentials?.email || !credentials?.password)
|
||||
return null;
|
||||
const { email, password } = credentials as any;
|
||||
|
||||
const res = await fetch(
|
||||
"https://api.kgroaduat.fishrungames.com/api/v1/users/login/",
|
||||
{
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({
|
||||
email,
|
||||
password,
|
||||
}),
|
||||
}
|
||||
);
|
||||
|
||||
if (res.status === 401) {
|
||||
console.log(res.status);
|
||||
return null;
|
||||
}
|
||||
|
||||
const user = await res.json();
|
||||
return user;
|
||||
},
|
||||
}),
|
||||
],
|
||||
pages: {
|
||||
signIn: "/sign-in",
|
||||
},
|
||||
session: {
|
||||
strategy: "jwt",
|
||||
},
|
||||
callbacks: {
|
||||
async jwt({ token, user }) {
|
||||
if (user) return { ...token, ...user };
|
||||
|
||||
return refreshToken(token);
|
||||
},
|
||||
|
||||
async session({ token, session }) {
|
||||
session.access_token = token.access_token;
|
||||
session.refresh_token = token.refresh_token;
|
||||
|
||||
return session;
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const handler = NextAuth(authOptions);
|
||||
|
||||
export { handler as GET, handler as POST };
|
||||
@@ -0,0 +1,3 @@
|
||||
import CreateReportPage from "@/Pages/CreateReportPage/CreateReportPage";
|
||||
|
||||
export default CreateReportPage;
|
||||
@@ -0,0 +1,3 @@
|
||||
import ProfileLayout from "@/Pages/profile/ProfilePage/ProfileLayout";
|
||||
|
||||
export default ProfileLayout;
|
||||
@@ -0,0 +1,3 @@
|
||||
import MyReportsPage from "@/Pages/profile/MyReportsPage/MyReportsPage";
|
||||
|
||||
export default MyReportsPage;
|
||||
@@ -1,7 +0,0 @@
|
||||
import React from "react";
|
||||
|
||||
const page = () => {
|
||||
return <div>page</div>;
|
||||
};
|
||||
|
||||
export default page;
|
||||
@@ -0,0 +1,3 @@
|
||||
import PersonalDataPage from "@/Pages/profile/PersonalDataPage/PersonalDataPage";
|
||||
|
||||
export default PersonalDataPage;
|
||||
@@ -0,0 +1,3 @@
|
||||
import ReportDetailsPage from "@/Pages/ReportDetailsPage/ReportDetailsPage";
|
||||
|
||||
export default ReportDetailsPage;
|
||||
Reference in new issue
Block a user