Files
automatisch/packages/backend/src/graphql/mutations/login.ts
2023-07-30 14:59:16 +00:00

31 lines
662 B
TypeScript

import User from '../../models/user';
import jwt from 'jsonwebtoken';
import appConfig from '../../config/app';
type Params = {
input: {
email: string;
password: string;
};
};
const TOKEN_EXPIRES_IN = '14d';
const login = async (_parent: unknown, params: Params) => {
const user = await User.query().findOne({
email: params.input.email.toLowerCase(),
});
if (user && (await user.login(params.input.password))) {
const token = jwt.sign({ userId: user.id }, appConfig.appSecretKey, {
expiresIn: TOKEN_EXPIRES_IN,
});
return { token, user };
}
throw new Error('User could not be found.');
};
export default login;