obrigado-react-admin-backend-utils
Version:
Helper utilities for react-admin graphql backend.
77 lines • 3.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const type_graphql_1 = require("type-graphql");
const GQLAdministrator_1 = require("../types/GQLAdministrator");
const Administrator_1 = require("../models/Administrator");
const apollo_server_errors_1 = require("apollo-server-errors");
const __1 = require("..");
const bcrypt = require("bcrypt");
const GQLLogoutResult_1 = require("../types/GQLLogoutResult");
const moment = require("moment");
const type_graphql_2 = require("type-graphql");
let AdminAuthResolver = class AdminAuthResolver {
async adminLogin(username, password, ctx) {
const user = await Administrator_1.Administrator.findOne({ where: { username } });
if (user == null) {
throw new apollo_server_errors_1.ApolloError('Wrong email or password', 'WRONG_CREDENTIALS');
}
if (!bcrypt.compareSync(password, user.password)) {
throw new apollo_server_errors_1.ApolloError('Wrong email or password', 'WRONG_CREDENTIALS');
}
if (user.isBlocked) {
throw new apollo_server_errors_1.ApolloError('Your account has been blocked', 'BLOCKED_ADMIN');
}
let secret = process.env['APP_SECRET'];
if (!secret) {
throw new apollo_server_errors_1.ApolloError('Please set env APP_SECRET');
}
let expire = parseInt(process.env.ADMINISTRATOR_SESSION_EXPIRE || '365');
user.token = __1.getJWTToken({ id: user.id, type: 'admin' }, expire);
ctx.session.res.cookie('admin_token', user.token, {
httpOnly: true,
expires: moment()
.add(expire, 'day')
.toDate(),
});
return user;
}
async adminCheck(context) {
if (!context.administrator)
throw new apollo_server_errors_1.ApolloError('Admin not authorized');
return Administrator_1.Administrator.findOneOrFail({ id: context.administrator.id });
}
async adminLogOut(ctx) {
ctx.session.res.clearCookie('admin_token');
return {
message: 'Logout success',
code: 'SUCCESS',
};
}
};
tslib_1.__decorate([
type_graphql_1.Mutation(type => GQLAdministrator_1.GQLAdministrator),
tslib_1.__param(0, type_graphql_1.Arg('username')), tslib_1.__param(1, type_graphql_1.Arg('password')), tslib_1.__param(2, type_graphql_1.Ctx()),
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [String, String, Object]),
tslib_1.__metadata("design:returntype", Promise)
], AdminAuthResolver.prototype, "adminLogin", null);
tslib_1.__decorate([
type_graphql_1.Query(type => GQLAdministrator_1.GQLAdministrator),
tslib_1.__param(0, type_graphql_1.Ctx()),
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [Object]),
tslib_1.__metadata("design:returntype", Promise)
], AdminAuthResolver.prototype, "adminCheck", null);
tslib_1.__decorate([
type_graphql_1.Mutation(type => GQLLogoutResult_1.GQLLogoutResult),
tslib_1.__param(0, type_graphql_1.Ctx()),
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [Object]),
tslib_1.__metadata("design:returntype", Promise)
], AdminAuthResolver.prototype, "adminLogOut", null);
AdminAuthResolver = tslib_1.__decorate([
type_graphql_2.Resolver()
], AdminAuthResolver);
exports.AdminAuthResolver = AdminAuthResolver;
//# sourceMappingURL=AdminAuthResolver.js.map