@hapiboo/module-auth 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Profile = exports.User = void 0;
10
+ const date_1 = require("@hapiboo/date");
11
+ const flux_1 = require("@hapiboo/flux");
12
+ const naming_1 = require("./naming");
13
+ let User = class User {
14
+ constructor() {
15
+ this.id = '';
16
+ this.account_id = '';
17
+ this.type = 'standard';
18
+ this.status = 'created';
19
+ this.profile = new Profile();
20
+ this.createdAt = date_1.DateObject.now().toUtc();
21
+ this.updatedAt = date_1.DateObject.now().toUtc();
22
+ this.lastLoginAt = '';
23
+ }
24
+ clone(model) {
25
+ this.id = model.id;
26
+ this.account_id = model.account_id;
27
+ this.type = model.type;
28
+ this.status = model.status;
29
+ this.profile = new Profile().clone(model.profile);
30
+ this.createdAt = model.createdAt;
31
+ this.updatedAt = model.updatedAt;
32
+ this.lastLoginAt = model.lastLoginAt;
33
+ return this;
34
+ }
35
+ create(id, account_id, type, status, display, email) {
36
+ this.id = id;
37
+ this.account_id = account_id ?? '';
38
+ this.type = type;
39
+ this.status = status;
40
+ this.profile = new Profile().create(display, email);
41
+ this.createdAt = date_1.DateObject.now().toUtc();
42
+ this.updatedAt = date_1.DateObject.now().toUtc();
43
+ this.lastLoginAt = '';
44
+ return this;
45
+ }
46
+ updateName(name) {
47
+ this.profile.display = name;
48
+ this.updatedAt = date_1.DateObject.now().toUtc();
49
+ return this;
50
+ }
51
+ confirm() {
52
+ this.status = 'active';
53
+ this.updatedAt = date_1.DateObject.now().toUtc();
54
+ return this;
55
+ }
56
+ };
57
+ exports.User = User;
58
+ __decorate([
59
+ (0, flux_1.FluxIdentifier)()
60
+ ], User.prototype, "id", void 0);
61
+ __decorate([
62
+ (0, flux_1.FluxColumn)(naming_1.naming.users.columns.account_id)
63
+ ], User.prototype, "account_id", void 0);
64
+ __decorate([
65
+ (0, flux_1.FluxColumn)(naming_1.naming.users.columns.type)
66
+ ], User.prototype, "type", void 0);
67
+ __decorate([
68
+ (0, flux_1.FluxColumn)(naming_1.naming.users.columns.status)
69
+ ], User.prototype, "status", void 0);
70
+ exports.User = User = __decorate([
71
+ (0, flux_1.FluxTable)(naming_1.naming.users.table),
72
+ (0, flux_1.FluxIndex)(naming_1.naming.users.indexes.by_account, naming_1.naming.users.columns.account_id, naming_1.naming.users.columns.status),
73
+ (0, flux_1.FluxIndex)(naming_1.naming.users.indexes.by_type, naming_1.naming.users.columns.type, naming_1.naming.users.columns.status)
74
+ ], User);
75
+ class Profile {
76
+ constructor() {
77
+ this.display = '';
78
+ this.email = '';
79
+ this.phone = '';
80
+ this.locale = '';
81
+ this.avatarUrl = '';
82
+ }
83
+ clone(model) {
84
+ this.display = model.display;
85
+ this.email = model.email;
86
+ this.phone = model.phone;
87
+ this.locale = model.locale;
88
+ this.avatarUrl = model.avatarUrl;
89
+ return this;
90
+ }
91
+ create(display, email) {
92
+ this.display = display;
93
+ this.email = email;
94
+ return this;
95
+ }
96
+ }
97
+ exports.Profile = Profile;
@@ -0,0 +1 @@
1
+ export declare const access: import("@hapiboo/server").IRoutingItem;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.access = void 0;
4
+ const express_1 = require("express");
5
+ const server_1 = require("@hapiboo/server");
6
+ const security_1 = require("../service/security");
7
+ const controller_1 = require("./controller");
8
+ const router = (0, express_1.Router)();
9
+ //app roles definition
10
+ router.get('/roles', security_1.securityService.middleware.simple, async (_request, response) => {
11
+ server_1.server.prepareJsonPromiseResponse(response, controller_1.authController.access.getRoles());
12
+ });
13
+ //app permission definieion
14
+ router.get('/permissions', security_1.securityService.middleware.simple, async (_request, response) => {
15
+ server_1.server.prepareJsonPromiseResponse(response, controller_1.authController.access.getPermissions());
16
+ });
17
+ exports.access = server_1.routingProvider.createRoutingItem('/access', router);
@@ -0,0 +1,58 @@
1
+ import { Request } from 'express';
2
+ import { IResponsePromise, IResponsePromiseVoid } from '@hapiboo/core';
3
+ import { IFluxRequest, IFluxTokenRequest } from '../service/security';
4
+ import { Permission, Role } from '../models';
5
+ export declare namespace authController {
6
+ namespace init {
7
+ function start(): IResponsePromise<{
8
+ id: string;
9
+ }>;
10
+ }
11
+ namespace user {
12
+ function register(request: Request): IResponsePromise<{
13
+ user: string;
14
+ account: string;
15
+ }>;
16
+ function registrationConfirm(request: Request): IResponsePromise<{
17
+ token: string;
18
+ refreshToken: string;
19
+ }>;
20
+ function invitationConfirm(request: Request): IResponsePromise<{
21
+ token: string;
22
+ refreshToken: string;
23
+ }>;
24
+ }
25
+ namespace password {
26
+ function login(request: Request): IResponsePromise<{
27
+ token: string;
28
+ refreshToken: string;
29
+ }>;
30
+ function forgot(request: Request): IResponsePromiseVoid;
31
+ function recover(request: Request): IResponsePromise<{
32
+ token: string;
33
+ refreshToken: string;
34
+ }>;
35
+ function change(request: IFluxRequest): IResponsePromise<{
36
+ token: string;
37
+ refreshToken: string;
38
+ }>;
39
+ function refresh(request: IFluxTokenRequest): IResponsePromise<{
40
+ token: string;
41
+ refreshToken: string;
42
+ }>;
43
+ }
44
+ namespace profile {
45
+ function get(request: IFluxRequest): IResponsePromise<{
46
+ email: string;
47
+ name: string;
48
+ account_id: string | undefined;
49
+ admin: boolean;
50
+ permissions: string[];
51
+ }>;
52
+ function update(request: IFluxRequest): IResponsePromiseVoid;
53
+ }
54
+ namespace access {
55
+ function getRoles(): IResponsePromise<Role[]>;
56
+ function getPermissions(): IResponsePromise<Permission[]>;
57
+ }
58
+ }
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.authController = void 0;
4
+ const server_1 = require("@hapiboo/server");
5
+ const authentication_1 = require("../service/authentication");
6
+ const authorization_1 = require("../service/authorization");
7
+ var authController;
8
+ (function (authController) {
9
+ let init;
10
+ (function (init) {
11
+ function start() {
12
+ return authentication_1.authenticationService.general.initData(process.env.FRONTEND_URL);
13
+ }
14
+ init.start = start;
15
+ })(init = authController.init || (authController.init = {}));
16
+ let user;
17
+ (function (user) {
18
+ function register(request) {
19
+ return server_1.server.createValidatedPromise(request, (req) => {
20
+ return server_1.validator.validateString(req.body.name) &&
21
+ server_1.validator.validateString(req.body.login) &&
22
+ server_1.validator.validateString(req.body.password);
23
+ }, authentication_1.authenticationService.user.registerPassword(request.body.login, request.body.name, request.body.login, request.body.password, request.body.name, request.body.login, process.env.FRONTEND_URL));
24
+ }
25
+ user.register = register;
26
+ function registrationConfirm(request) {
27
+ return server_1.server.createValidatedPromise(request, (req) => {
28
+ return server_1.validator.validateString(req.body.code) &&
29
+ server_1.validator.validateString(req.body.password);
30
+ }, authentication_1.authenticationService.actions.confirmRegistration(request.body.code, request.body.password));
31
+ }
32
+ user.registrationConfirm = registrationConfirm;
33
+ function invitationConfirm(request) {
34
+ return server_1.server.createValidatedPromise(request, (req) => {
35
+ return server_1.validator.validateString(req.body.code) &&
36
+ server_1.validator.validateString(req.body.password);
37
+ }, authentication_1.authenticationService.actions.confirmInvitation(request.body.code, request.body.password));
38
+ }
39
+ user.invitationConfirm = invitationConfirm;
40
+ })(user = authController.user || (authController.user = {}));
41
+ let password;
42
+ (function (password) {
43
+ function login(request) {
44
+ return server_1.server.createValidatedPromise(request, (req) => {
45
+ return server_1.validator.validateString(req.body.login) &&
46
+ server_1.validator.validateString(req.body.password);
47
+ }, authentication_1.authenticationService.me.passwordLogin(request.body.login, request.body.password));
48
+ }
49
+ password.login = login;
50
+ function forgot(request) {
51
+ return server_1.server.createValidatedVoidPromise(request, (req) => {
52
+ return server_1.validator.validateString(req.body.email);
53
+ }, authentication_1.authenticationService.actions.forgotPassword(request.body.email, process.env.FRONTEND_URL));
54
+ }
55
+ password.forgot = forgot;
56
+ function recover(request) {
57
+ return server_1.server.createValidatedPromise(request, (req) => {
58
+ return server_1.validator.validateString(req.body.recovery) &&
59
+ server_1.validator.validateString(req.body.password);
60
+ }, authentication_1.authenticationService.actions.recoverPassword(request.body.recovery, request.body.password));
61
+ }
62
+ password.recover = recover;
63
+ function change(request) {
64
+ return server_1.validator.createValidatedPromise(() => {
65
+ return request.payload !== undefined &&
66
+ server_1.validator.validateString(request.payload.user_id) &&
67
+ server_1.validator.validateString(request.body.email) &&
68
+ server_1.validator.validateString(request.body.oldPassword) &&
69
+ server_1.validator.validateString(request.body.newPassword);
70
+ }, authentication_1.authenticationService.me.changePassword(request.payload.user_id, request.body.email, request.body.oldPassword, request.body.newPassword));
71
+ }
72
+ password.change = change;
73
+ function refresh(request) {
74
+ return server_1.validator.createValidatedPromise(() => {
75
+ return request.payload !== undefined &&
76
+ server_1.validator.validateString(request.payload.user_id) &&
77
+ server_1.validator.validateString(request.payload.code);
78
+ }, authentication_1.authenticationService.me.refreshTokenLogin(request.payload.user_id, request.payload.code));
79
+ }
80
+ password.refresh = refresh;
81
+ })(password = authController.password || (authController.password = {}));
82
+ let profile;
83
+ (function (profile) {
84
+ function get(request) {
85
+ return server_1.validator.createValidatedPromise(() => {
86
+ return request.payload !== undefined &&
87
+ server_1.validator.validateString(request.payload.user_id);
88
+ }, authentication_1.authenticationService.me.get(request.payload.user_id));
89
+ }
90
+ profile.get = get;
91
+ function update(request) {
92
+ return server_1.validator.createValidatedVoidPromise(() => {
93
+ return request.payload !== undefined &&
94
+ server_1.validator.validateString(request.payload.user_id) &&
95
+ server_1.validator.validateString(request.body.name);
96
+ }, authentication_1.authenticationService.me.update(request.payload.user_id, request.body.name));
97
+ }
98
+ profile.update = update;
99
+ })(profile = authController.profile || (authController.profile = {}));
100
+ let access;
101
+ (function (access) {
102
+ function getRoles() {
103
+ return authorization_1.authorizationService.role.all();
104
+ }
105
+ access.getRoles = getRoles;
106
+ function getPermissions() {
107
+ return authorization_1.authorizationService.permission.all();
108
+ }
109
+ access.getPermissions = getPermissions;
110
+ })(access = authController.access || (authController.access = {}));
111
+ })(authController || (exports.authController = authController = {}));
@@ -0,0 +1 @@
1
+ export declare const router: import("@hapiboo/server").IRoutingItem;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.router = void 0;
4
+ const server_1 = require("@hapiboo/server");
5
+ const init_1 = require("./init");
6
+ const access_1 = require("./access");
7
+ const profile_1 = require("./profile");
8
+ const password_1 = require("./password");
9
+ const user_1 = require("./user");
10
+ exports.router = server_1.routingProvider.createRouter('/auth', [init_1.init, user_1.user, password_1.password, profile_1.profile, access_1.access]);
@@ -0,0 +1 @@
1
+ export declare const init: import("@hapiboo/server").IRoutingItem;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.init = void 0;
4
+ const express_1 = require("express");
5
+ const server_1 = require("@hapiboo/server");
6
+ const controller_1 = require("./controller");
7
+ const router = (0, express_1.Router)();
8
+ router.put('', async (_request, response) => {
9
+ server_1.server.prepareJsonPromiseResponse(response, controller_1.authController.init.start());
10
+ });
11
+ exports.init = server_1.routingProvider.createRoutingItem('/init', router);
@@ -0,0 +1 @@
1
+ export declare const password: import("@hapiboo/server").IRoutingItem;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.password = void 0;
4
+ const express_1 = require("express");
5
+ const server_1 = require("@hapiboo/server");
6
+ const controller_1 = require("./controller");
7
+ const security_1 = require("../service/security");
8
+ const router = (0, express_1.Router)();
9
+ router.post('/login', async (request, response) => {
10
+ server_1.server.prepareJsonPromiseResponse(response, controller_1.authController.password.login(request));
11
+ });
12
+ router.post('/forgot', async (request, response) => {
13
+ server_1.server.prepareEmptyPromiseResponse(response, controller_1.authController.password.forgot(request));
14
+ });
15
+ router.post('/recover', async (request, response) => {
16
+ server_1.server.prepareJsonPromiseResponse(response, controller_1.authController.password.recover(request));
17
+ });
18
+ router.post('/refresh', security_1.securityService.middleware.refresh, async (request, response) => {
19
+ server_1.server.prepareJsonPromiseResponse(response, controller_1.authController.password.refresh(request));
20
+ });
21
+ router.post('/password', security_1.securityService.middleware.simple, async (request, response) => {
22
+ server_1.server.prepareJsonPromiseResponse(response, controller_1.authController.password.change(request));
23
+ });
24
+ exports.password = server_1.routingProvider.createRoutingItem('/password', router);
@@ -0,0 +1 @@
1
+ export declare const profile: import("@hapiboo/server").IRoutingItem;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.profile = void 0;
4
+ const express_1 = require("express");
5
+ const server_1 = require("@hapiboo/server");
6
+ const controller_1 = require("./controller");
7
+ const security_1 = require("../service/security");
8
+ const router = (0, express_1.Router)();
9
+ router.get('', security_1.securityService.middleware.simple, async (request, response) => {
10
+ server_1.server.prepareJsonPromiseResponse(response, controller_1.authController.profile.get(request));
11
+ });
12
+ router.post('', security_1.securityService.middleware.simple, async (request, response) => {
13
+ server_1.server.prepareEmptyPromiseResponse(response, controller_1.authController.profile.update(request));
14
+ });
15
+ exports.profile = server_1.routingProvider.createRoutingItem('/profile', router);
@@ -0,0 +1 @@
1
+ export declare const user: import("@hapiboo/server").IRoutingItem;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.user = void 0;
4
+ const express_1 = require("express");
5
+ const server_1 = require("@hapiboo/server");
6
+ const controller_1 = require("./controller");
7
+ const router = (0, express_1.Router)();
8
+ router.post('/register', async (request, response) => {
9
+ server_1.server.prepareJsonPromiseResponse(response, controller_1.authController.user.register(request));
10
+ });
11
+ router.post('/confirm', async (request, response) => {
12
+ server_1.server.prepareJsonPromiseResponse(response, controller_1.authController.user.registrationConfirm(request));
13
+ });
14
+ router.post('/invite', async (request, response) => {
15
+ server_1.server.prepareJsonPromiseResponse(response, controller_1.authController.user.invitationConfirm(request));
16
+ });
17
+ exports.user = server_1.routingProvider.createRoutingItem('/user', router);
@@ -0,0 +1,51 @@
1
+ import { IResponsePromise, IResponsePromiseVoid } from '@hapiboo/core';
2
+ import { IFluxJwt } from './security';
3
+ import { User } from '../models';
4
+ export declare namespace authenticationService {
5
+ namespace general {
6
+ function initData(baseURL: string): IResponsePromise<{
7
+ id: string;
8
+ }>;
9
+ function get(user_id: string): IResponsePromise<User>;
10
+ }
11
+ namespace me {
12
+ function get(user_id: string): IResponsePromise<{
13
+ id: string;
14
+ email: string;
15
+ name: string;
16
+ account_id: string | undefined;
17
+ admin: boolean;
18
+ permissions: string[];
19
+ }>;
20
+ function update(user_id: string, name: string): IResponsePromise<User>;
21
+ function passwordLogin(name: string, password: string): IResponsePromise<IFluxJwt>;
22
+ function changePassword(user_id: string, credentialName: string, oldPassword: string, newPassword: string): IResponsePromise<IFluxJwt>;
23
+ function refreshTokenLogin(user_id: string, refreshCode: string): IResponsePromise<IFluxJwt>;
24
+ }
25
+ namespace admin {
26
+ function invite(name: string, emailAddress: string, displayName: string, baseURL: string): IResponsePromise<{
27
+ id: string;
28
+ }>;
29
+ function remove(id: string, currentUserId: string): IResponsePromiseVoid;
30
+ function getAll(): IResponsePromise<User[]>;
31
+ }
32
+ namespace user {
33
+ function registerPassword(credentialName: string, userDisplayName: string, userEmailAddress: string, password: string, account_name: string, account_email: string, baseUrl: string): IResponsePromise<{
34
+ user: string;
35
+ account: string;
36
+ }>;
37
+ function invite(account_id: string, credentialName: string, displayName: string, emailAddress: string, baseUrl: string): IResponsePromise<{
38
+ id: string;
39
+ }>;
40
+ function updatePayload<T>(user_id: string, account_id: string, payload: T): string;
41
+ function remove(user_id: string, currentUserId: string, account_id: string): IResponsePromiseVoid;
42
+ function getForAccount(account_id: string): IResponsePromise<User[]>;
43
+ }
44
+ namespace actions {
45
+ function resendConfirmation(user_id: string, baseUrl: string): IResponsePromiseVoid;
46
+ function confirmRegistration(code: string, password: string): IResponsePromise<IFluxJwt>;
47
+ function confirmInvitation(code: string, password: string): IResponsePromise<IFluxJwt>;
48
+ function recoverPassword(recovery: string, password: string): IResponsePromise<IFluxJwt>;
49
+ function forgotPassword(credentialName: string, baseUrl: string): IResponsePromiseVoid;
50
+ }
51
+ }