mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-10 15:58:38 +01:00
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
|
|
import { createUserJwt } from '~/server/AuthManager';
|
|
import { UserModel } from '@schema/UserSchema';
|
|
|
|
const { NOAUTH_USER_EMAIL, NOAUTH_USER_PASS, public: publicRuntime } = useRuntimeConfig();
|
|
|
|
const noAuthMode = publicRuntime.AUTH_MODE == 'NO_AUTH';
|
|
|
|
export default defineEventHandler(async event => {
|
|
|
|
if (!noAuthMode) {
|
|
console.error('Endpoint available only in NO_AUTH mode');
|
|
return { error: true, access_token: '' }
|
|
}
|
|
|
|
if (!NOAUTH_USER_EMAIL) {
|
|
console.error('NOAUTH_USER_EMAIL is required in NO_AUTH mode');
|
|
return { error: true, access_token: '' }
|
|
}
|
|
|
|
if (!NOAUTH_USER_PASS) {
|
|
console.error('NOAUTH_USER_PASS is required in NO_AUTH mode');
|
|
return { error: true, access_token: '' }
|
|
}
|
|
|
|
const body = await readBody(event);
|
|
|
|
if (body.email != NOAUTH_USER_EMAIL || body.password != NOAUTH_USER_PASS) return { error: true, access_token: '', errorMessage: 'Username or password invalid' }
|
|
|
|
const user = await UserModel.findOne({ email: NOAUTH_USER_EMAIL });
|
|
|
|
if (user) return {
|
|
error: false,
|
|
access_token: createUserJwt({
|
|
email: user.email,
|
|
name: user.name
|
|
})
|
|
}
|
|
|
|
const newUser = new UserModel({
|
|
email: NOAUTH_USER_EMAIL,
|
|
given_name: NOAUTH_USER_EMAIL.split('@')[0] || 'NONAME',
|
|
name: NOAUTH_USER_EMAIL.split('@')[0] || 'NONAME',
|
|
locale: 'no-auth',
|
|
picture: '',
|
|
created_at: Date.now()
|
|
});
|
|
|
|
const savedUser = await newUser.save();
|
|
|
|
return { error: false, access_token: createUserJwt({ email: savedUser.email, name: savedUser.name }) }
|
|
|
|
}); |