Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

혼자서 앱 만드는 개발자 함께하는 AI 세상

Purple Admin UI 적용해보기 sqlite 적용해보기 ... 작성중 본문

nextjs 랭체인 챗봇만들기

Purple Admin UI 적용해보기 sqlite 적용해보기 ... 작성중

혼앱사 2023. 8. 6. 22:54
반응형

https://github.com/purpleio/purple-admin-ui

 

GitHub - purpleio/purple-admin-ui: Next.js와 Tailwind를 이용한 모-던 어드민 템플릿

Next.js와 Tailwind를 이용한 모-던 어드민 템플릿. Contribute to purpleio/purple-admin-ui development by creating an account on GitHub.

github.com

늘 php로 작업하다가 nextjs를 접하고 개발방법이나 여러면에서 유리하것 같은데 php만큼 플러터만큼 레버런스나 샘플소스를 구하기 어려워서 마음이 복잡했는데 이런걸 보니 기쁘다 잘정리된 소스가 개발에 도움이 되니까. 처음부터 맨땅에 해딩하면서 개발 하는짓으 나쁜짓이다. ㅎㅎㅎ

어째든 분석해보면서 UI에 대한 무거운 마음을 떨치고 싶다...

그런데 작성하다가 백엔드인지 프론트엔드지 헤깔리때가 있는데 

import { PrismaClient } from '@prisma/client';
import NextAuth, { Session } from "next-auth";
import { OAuthUserConfig } from "next-auth/providers";
import CredentialsProvider, { CredentialsConfig } from "next-auth/providers/credentials";
import GithubProvider from "next-auth/providers/github";
import GoogleProvider from "next-auth/providers/google";

const credentialsProviderOption: CredentialsConfig<{}> = {
type: "credentials",
id: "login-credentials",
name: "login-credentials",
credentials: {
username: { label: "Username", type: "text" },
password: { label: "Password", type: "password" },
},
async authorize(credentials: Record<string, unknown> | undefined) {

let ret ={};
const prisma = new PrismaClient();

let email :String= credentials?.username as String;
let name = "";
let id = "";
let password = credentials?.password;
 
const user = await prisma.user.findUnique({
where: {
email: email as string,
passwd: password as string,
},
});
 
if(user == null){
console.log(email+"이메일 주소가 잘못되었습니다.");
return null;
//alert('test');
 
} else {
return {
id: id,
login: email,
name: name,
email: email+"",
image: "",
};
}
}
};

const googleProviderOption: OAuthUserConfig<{}> = {
clientId: process.env.GOOGLE_CLIENT_ID || "",
clientSecret: process.env.GOOGLE_CLIENT_SECRET || "",
profile: (profile: any) => ({ ...profile, id: profile.sub, login: profile.email, image: profile.picture }),
};

const githubProviderOption: OAuthUserConfig<{}> = {
clientId: process.env.GITHUB_CLIENT_ID || "",
clientSecret: process.env.GITHUB_CLIENT_SECRET || "",
profile: (profile: any) => ({ ...profile, image: profile.avatar_url }),
};

export default NextAuth({
pages: {
signIn: "/login",
verifyRequest: "/login?verify=1",
error: "/login",
},
providers: [
CredentialsProvider(credentialsProviderOption),
GoogleProvider(googleProviderOption),
GithubProvider(githubProviderOption),
],
callbacks: {
jwt({ token, user }) {
if (user) {
token.id = (user as Session["user"]).id;
token.login = (user as Session["user"]).login;
}
return token;
},
session({ session, token }) {
session.user = { ...session.user, id: token.id as string, login: token.login as string };
return session;
},
},
});

 

728x90
반응형
Comments