@hapiboo/module-auth 1.1.0 → 1.1.2
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.
|
@@ -213,7 +213,12 @@ var authenticationService;
|
|
|
213
213
|
core_1.promise.check(repository_1.repository.user.count(), reject)
|
|
214
214
|
.then((count) => {
|
|
215
215
|
if (count === 0) {
|
|
216
|
-
|
|
216
|
+
//security model install
|
|
217
|
+
core_1.promise.checkVoid(authorization_1.authorizationService.general.initializeSecurityModel(), reject)
|
|
218
|
+
.then(() => {
|
|
219
|
+
//create first admin
|
|
220
|
+
core_1.promise.resolve(admin.invite(settings_1.authSettings.firstAdmin.email, settings_1.authSettings.firstAdmin.email, settings_1.authSettings.firstAdmin.name, baseURL), resolve, reject);
|
|
221
|
+
});
|
|
217
222
|
}
|
|
218
223
|
else {
|
|
219
224
|
resolve({ id: '' });
|
|
@@ -3,6 +3,9 @@ import { IResponsePromise, IResponsePromiseVoid } from '@hapiboo/core';
|
|
|
3
3
|
import { Permission, Role, UserAccess } from '../models';
|
|
4
4
|
import { IFluxRequest } from './security';
|
|
5
5
|
export declare namespace authorizationService {
|
|
6
|
+
namespace general {
|
|
7
|
+
function initializeSecurityModel(): IResponsePromiseVoid;
|
|
8
|
+
}
|
|
6
9
|
namespace permission {
|
|
7
10
|
function create(name: string): IResponsePromise<Permission>;
|
|
8
11
|
function edit(id: string, name: string): IResponsePromise<Permission>;
|
|
@@ -78,9 +78,75 @@ var helper;
|
|
|
78
78
|
}
|
|
79
79
|
userAccess.assignPermissions = assignPermissions;
|
|
80
80
|
})(userAccess = helper.userAccess || (helper.userAccess = {}));
|
|
81
|
+
let permissions;
|
|
82
|
+
(function (permissions_1) {
|
|
83
|
+
function ensureSingle(model) {
|
|
84
|
+
return core_1.promise.createDelayedVoidPromise((resolve, reject) => {
|
|
85
|
+
//check if permission exists
|
|
86
|
+
core_1.promise.check(repository_1.repository.permission.filter(model.id), reject)
|
|
87
|
+
.then((data) => {
|
|
88
|
+
if (data.length === 0) {
|
|
89
|
+
//create permission
|
|
90
|
+
core_1.promise.resolveVoid(repository_1.repository.permission.create(new models_1.Permission().clone(model)), resolve, reject);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
resolve();
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
function ensure() {
|
|
99
|
+
return core_1.promise.createDelayedVoidPromise((resolve, reject) => {
|
|
100
|
+
const permissions = settings_1.authSettings.getPermissions();
|
|
101
|
+
core_1.promise.resolveVoid(core_1.promise.all(permissions.map((perm) => {
|
|
102
|
+
return ensureSingle(perm);
|
|
103
|
+
})), resolve, reject);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
permissions_1.ensure = ensure;
|
|
107
|
+
})(permissions = helper.permissions || (helper.permissions = {}));
|
|
108
|
+
let roles;
|
|
109
|
+
(function (roles_1) {
|
|
110
|
+
function ensureSingle(model) {
|
|
111
|
+
return core_1.promise.createDelayedVoidPromise((resolve, reject) => {
|
|
112
|
+
//check if role exists
|
|
113
|
+
core_1.promise.check(repository_1.repository.role.filter(model.id), reject)
|
|
114
|
+
.then((data) => {
|
|
115
|
+
if (data.length === 0) {
|
|
116
|
+
//create role
|
|
117
|
+
core_1.promise.resolveVoid(repository_1.repository.role.create(new models_1.Role().clone(model)), resolve, reject);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
resolve();
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
function ensure() {
|
|
126
|
+
return core_1.promise.createDelayedVoidPromise((resolve, reject) => {
|
|
127
|
+
const roles = settings_1.authSettings.getRoles();
|
|
128
|
+
core_1.promise.resolveVoid(core_1.promise.all(roles.map((role) => {
|
|
129
|
+
return ensureSingle(role);
|
|
130
|
+
})), resolve, reject);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
roles_1.ensure = ensure;
|
|
134
|
+
})(roles = helper.roles || (helper.roles = {}));
|
|
81
135
|
})(helper || (helper = {}));
|
|
82
136
|
var authorizationService;
|
|
83
137
|
(function (authorizationService) {
|
|
138
|
+
let general;
|
|
139
|
+
(function (general) {
|
|
140
|
+
function initializeSecurityModel() {
|
|
141
|
+
return core_1.promise.createDelayedVoidPromise((resolve, reject) => {
|
|
142
|
+
core_1.promise.checkVoid(helper.permissions.ensure(), reject)
|
|
143
|
+
.then(() => {
|
|
144
|
+
core_1.promise.resolveVoid(helper.roles.ensure(), resolve, reject);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
general.initializeSecurityModel = initializeSecurityModel;
|
|
149
|
+
})(general = authorizationService.general || (authorizationService.general = {}));
|
|
84
150
|
let permission;
|
|
85
151
|
(function (permission_1) {
|
|
86
152
|
function create(name) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IResponsePromise, IResponsePromiseVoid } from '@hapiboo/core';
|
|
2
|
-
import { User } from '../models';
|
|
2
|
+
import { Permission, Role, User } from '../models';
|
|
3
3
|
export interface IAuthEmailLink {
|
|
4
4
|
url: string;
|
|
5
5
|
title: string;
|
|
@@ -23,6 +23,8 @@ export interface IAuthSettings {
|
|
|
23
23
|
email: string;
|
|
24
24
|
};
|
|
25
25
|
overrulingPermission: string | undefined;
|
|
26
|
+
getPermissions?: () => Permission[];
|
|
27
|
+
getRoles?: () => Role[];
|
|
26
28
|
}
|
|
27
29
|
export declare namespace authSettings {
|
|
28
30
|
function init(settings: IAuthSettings, performers: IAuthPerformers): void;
|
|
@@ -35,6 +37,8 @@ export declare namespace authSettings {
|
|
|
35
37
|
email: string;
|
|
36
38
|
};
|
|
37
39
|
const overrulingPermission: string | undefined;
|
|
40
|
+
function getPermissions(): Permission[];
|
|
41
|
+
function getRoles(): Role[];
|
|
38
42
|
function sendConfirmation(emailAddress: string, displayName: string, isInvited: boolean, confirmationLink: IAuthEmailLink): IResponsePromiseVoid;
|
|
39
43
|
function sendRecover(emailAddress: string, confirmationLink: IAuthEmailLink): IResponsePromiseVoid;
|
|
40
44
|
function sendAfterPasswordChanged(emailAddress: string): IResponsePromiseVoid;
|
package/dist/service/settings.js
CHANGED
|
@@ -42,6 +42,24 @@ var authSettings;
|
|
|
42
42
|
authSettings.overrulingPermission = (() => {
|
|
43
43
|
return _settings.overrulingPermission;
|
|
44
44
|
})();
|
|
45
|
+
function getPermissions() {
|
|
46
|
+
if (_settings.getPermissions) {
|
|
47
|
+
return _settings.getPermissions();
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
authSettings.getPermissions = getPermissions;
|
|
54
|
+
function getRoles() {
|
|
55
|
+
if (_settings.getRoles) {
|
|
56
|
+
return _settings.getRoles();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
authSettings.getRoles = getRoles;
|
|
45
63
|
function sendConfirmation(emailAddress, displayName, isInvited, confirmationLink) {
|
|
46
64
|
if (_performers) {
|
|
47
65
|
return _performers.sendConfirmation(emailAddress, displayName, isInvited, confirmationLink);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hapiboo/module-auth",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "MK13 Studio Hapiboo - Auth Module",
|
|
5
5
|
"author": "MK13 Studio",
|
|
6
6
|
"license": "ISC",
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
"dist"
|
|
14
14
|
],
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@hapiboo/core": "^3.0.
|
|
16
|
+
"@hapiboo/core": "^3.0.4",
|
|
17
17
|
"@hapiboo/crypto": "^3.0.0",
|
|
18
18
|
"@hapiboo/date": "^3.0.1",
|
|
19
|
-
"@hapiboo/flux": "^1.1.
|
|
20
|
-
"@hapiboo/server": "^3.0.
|
|
19
|
+
"@hapiboo/flux": "^1.1.3",
|
|
20
|
+
"@hapiboo/server": "^3.0.1",
|
|
21
21
|
"express": "^5.2.1",
|
|
22
22
|
"jsonwebtoken": "^9.0.2",
|
|
23
23
|
"uuid": "^13.0.0"
|