@hapiboo/module-auth 1.1.1 → 1.1.3

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
- core_1.promise.resolve(admin.invite(settings_1.authSettings.firstAdmin.email, settings_1.authSettings.firstAdmin.email, settings_1.authSettings.firstAdmin.name, baseURL), resolve, reject);
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;
@@ -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.1",
3
+ "version": "1.1.3",
4
4
  "description": "MK13 Studio Hapiboo - Auth Module",
5
5
  "author": "MK13 Studio",
6
6
  "license": "ISC",
@@ -13,23 +13,23 @@
13
13
  "dist"
14
14
  ],
15
15
  "dependencies": {
16
- "@hapiboo/core": "^3.0.1",
17
- "@hapiboo/crypto": "^3.0.0",
18
- "@hapiboo/date": "^3.0.1",
19
- "@hapiboo/flux": "^1.1.3",
20
- "@hapiboo/server": "^3.0.1",
16
+ "@hapiboo/core": "^3.0.6",
17
+ "@hapiboo/crypto": "^3.0.1",
18
+ "@hapiboo/date": "^3.0.3",
19
+ "@hapiboo/flux": "^1.1.4",
20
+ "@hapiboo/server": "^3.0.2",
21
21
  "express": "^5.2.1",
22
- "jsonwebtoken": "^9.0.2",
23
- "uuid": "^13.0.0"
22
+ "jsonwebtoken": "^9.0.3",
23
+ "uuid": "^14.0.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/express": "^5.0.6",
27
27
  "@types/jsonwebtoken": "^9.0.10",
28
- "@typescript-eslint/eslint-plugin": "^8.51.0",
29
- "@typescript-eslint/parser": "^8.51.0",
30
- "eslint": "^9.39.2",
31
- "typescript": "^5.9.3",
32
- "typescript-eslint": "^8.51.0"
28
+ "@typescript-eslint/eslint-plugin": "^8.61.0",
29
+ "@typescript-eslint/parser": "^8.61.0",
30
+ "eslint": "^10.5.0",
31
+ "typescript": "^6.0.3",
32
+ "typescript-eslint": "^8.61.0"
33
33
  },
34
34
  "scripts": {
35
35
  "version-to-publish": "pnpm exec tsx ../../scripts/version_update.ts packages/_auth --publish-version",