adminforth 3.14.5 → 3.15.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.
- package/dist/auth.d.ts +18 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +46 -0
- package/dist/auth.js.map +1 -1
- package/dist/modules/restApi.d.ts +1 -0
- package/dist/modules/restApi.d.ts.map +1 -1
- package/dist/modules/restApi.js +32 -43
- package/dist/modules/restApi.js.map +1 -1
- package/dist/servers/express.d.ts +1 -6
- package/dist/servers/express.d.ts.map +1 -1
- package/dist/servers/express.js +21 -61
- package/dist/servers/express.js.map +1 -1
- package/dist/spa/src/App.vue +15 -9
- package/dist/spa/src/stores/core.ts +34 -16
- package/dist/spa/src/types/Back.ts +36 -0
- package/dist/spa/src/types/Common.ts +27 -0
- package/dist/spa/src/utils/utils.ts +8 -4
- package/dist/types/Back.d.ts +53 -0
- package/dist/types/Back.d.ts.map +1 -1
- package/dist/types/Back.js.map +1 -1
- package/dist/types/Common.d.ts +17 -0
- package/dist/types/Common.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/auth.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import AdminForth from './index.js';
|
|
2
|
-
import { IAdminForthAuth } from './types/Back.js';
|
|
2
|
+
import { AdminUserAuthorizationResult, HttpExtra, IAdminForthAuth, IAdminForthHttpResponse } from './types/Back.js';
|
|
3
|
+
import { AdminUser } from './types/Common.js';
|
|
3
4
|
declare class AdminForthAuth implements IAdminForthAuth {
|
|
4
5
|
adminforth: AdminForth;
|
|
5
6
|
constructor(adminforth: any);
|
|
@@ -33,6 +34,22 @@ declare class AdminForthAuth implements IAdminForthAuth {
|
|
|
33
34
|
}[];
|
|
34
35
|
name: string;
|
|
35
36
|
}): string | null;
|
|
37
|
+
getAuthCookie(cookies: {
|
|
38
|
+
key: string;
|
|
39
|
+
value: string;
|
|
40
|
+
}[]): string | null;
|
|
41
|
+
runAdminUserAuthorizeHooks(adminUser: AdminUser, response: IAdminForthHttpResponse, extra: HttpExtra): Promise<{
|
|
42
|
+
allowed: boolean;
|
|
43
|
+
error?: string;
|
|
44
|
+
}>;
|
|
45
|
+
authorizeByCookies({ cookies, response, extra }: {
|
|
46
|
+
cookies: {
|
|
47
|
+
key: string;
|
|
48
|
+
value: string;
|
|
49
|
+
}[];
|
|
50
|
+
response: IAdminForthHttpResponse;
|
|
51
|
+
extra: HttpExtra;
|
|
52
|
+
}): Promise<AdminUserAuthorizationResult>;
|
|
36
53
|
issueJWT(payload: Object, type: string, expiresIn?: string | number): string;
|
|
37
54
|
verify(jwtToken: string, mustHaveType: string, decodeUser?: boolean | undefined): Promise<Object>;
|
|
38
55
|
static generatePasswordHash(password: any): Promise<string>;
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../auth.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../auth.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAA8B,SAAS,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAChJ,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAqC9C,cAAM,cAAe,YAAW,eAAe;IAC7C,UAAU,EAAE,UAAU,CAAC;gBAEX,UAAU,KAAA;IAItB,WAAW,CAAC,OAAO,EAAE,MAAM;IAkC3B,gBAAgB,CAAC,QAAQ,KAAA;IAKzB,aAAa,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAC,EAAE;QACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,EAAE,GAAG,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;KAClB;IAWD,kBAAkB,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;;;KAAA;IAKnC,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QACrC,QAAQ,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAC;YAAC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;SAAE,CAAA;KAC/K;IAoBD,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjC,OAAO,EAAE;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KACtD,GAAG,MAAM,GAAG,IAAI;IAKjB,aAAa,CAAC,OAAO,EAAE;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE,GAAG,MAAM,GAAG,IAAI;IAS/D,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,uBAAuB,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBpJ,kBAAkB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QACrD,OAAO,EAAE;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC,EAAE,CAAC;QACxC,QAAQ,EAAE,uBAAuB,CAAC;QAClC,KAAK,EAAE,SAAS,CAAC;KAClB,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAuBzC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,GAAG,MAAc,GAAG,MAAM;IAW7E,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAE,OAAO,GAAG,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;WAsChG,oBAAoB,CAAC,QAAQ,KAAA;WAM7B,cAAc,CAAC,QAAQ,KAAA,EAAE,cAAc,KAAA;CAOrD;AAED,eAAe,cAAc,CAAC"}
|
package/dist/auth.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import jwt from 'jsonwebtoken';
|
|
2
2
|
import crypto from 'crypto';
|
|
3
|
+
import { listify } from './modules/utils.js';
|
|
3
4
|
import { afLogger } from './modules/logger.js';
|
|
4
5
|
import is_ip_private from 'private-ip';
|
|
5
6
|
// Function to generate a password hash using PBKDF2
|
|
@@ -104,6 +105,51 @@ class AdminForthAuth {
|
|
|
104
105
|
const brandSlug = this.adminforth.config.customization.brandNameSlug;
|
|
105
106
|
return ((_a = cookies.find((cookie) => cookie.key === `adminforth_${brandSlug}_${name}`)) === null || _a === void 0 ? void 0 : _a.value) || null;
|
|
106
107
|
}
|
|
108
|
+
getAuthCookie(cookies) {
|
|
109
|
+
var _a;
|
|
110
|
+
const brandSlug = this.adminforth.config.customization.brandNameSlug;
|
|
111
|
+
const jwts = cookies.filter(({ key }) => key === `adminforth_${brandSlug}_jwt`);
|
|
112
|
+
if (jwts.length > 1) {
|
|
113
|
+
afLogger.error('Multiple adminforth_jwt cookies provided');
|
|
114
|
+
}
|
|
115
|
+
return ((_a = jwts[0]) === null || _a === void 0 ? void 0 : _a.value) || null;
|
|
116
|
+
}
|
|
117
|
+
async runAdminUserAuthorizeHooks(adminUser, response, extra) {
|
|
118
|
+
const adminUserAuthorize = this.adminforth.config.auth.adminUserAuthorize;
|
|
119
|
+
for (const hook of listify(adminUserAuthorize)) {
|
|
120
|
+
const resp = await hook({
|
|
121
|
+
adminUser,
|
|
122
|
+
response,
|
|
123
|
+
adminforth: this.adminforth,
|
|
124
|
+
extra,
|
|
125
|
+
});
|
|
126
|
+
if ((resp === null || resp === void 0 ? void 0 : resp.allowed) === false || (resp === null || resp === void 0 ? void 0 : resp.error)) {
|
|
127
|
+
return { allowed: resp === null || resp === void 0 ? void 0 : resp.allowed, error: resp === null || resp === void 0 ? void 0 : resp.error };
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return { allowed: true };
|
|
131
|
+
}
|
|
132
|
+
async authorizeByCookies({ cookies, response, extra }) {
|
|
133
|
+
const jwt = this.getAuthCookie(cookies);
|
|
134
|
+
if (!jwt) {
|
|
135
|
+
return { status: 'noToken' };
|
|
136
|
+
}
|
|
137
|
+
let adminUser;
|
|
138
|
+
try {
|
|
139
|
+
adminUser = await this.verify(jwt, 'auth');
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
return { status: 'verifyFailed', error };
|
|
143
|
+
}
|
|
144
|
+
if (!adminUser) {
|
|
145
|
+
return { status: 'invalidToken' };
|
|
146
|
+
}
|
|
147
|
+
const { allowed, error } = await this.runAdminUserAuthorizeHooks(adminUser, response, extra);
|
|
148
|
+
if (!allowed) {
|
|
149
|
+
return { status: 'notAllowed', error };
|
|
150
|
+
}
|
|
151
|
+
return { status: 'ok', adminUser };
|
|
152
|
+
}
|
|
107
153
|
issueJWT(payload, type, expiresIn = '24h') {
|
|
108
154
|
// read ADMINFORH_SECRET from environment if not drop error
|
|
109
155
|
const secret = process.env.ADMINFORTH_SECRET;
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../auth.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export default class AdminForthRestAPI implements IAdminForthRestAPI {
|
|
|
11
11
|
adminforth: IAdminForth;
|
|
12
12
|
loginRateLimiters: RateLimiter[];
|
|
13
13
|
constructor(adminforth: IAdminForth);
|
|
14
|
+
private getAdminUserFromRequest;
|
|
14
15
|
private normalizeJsonColumns;
|
|
15
16
|
processLoginCallbacks(adminUser: AdminUser, toReturn: {
|
|
16
17
|
redirectTo?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restApi.d.ts","sourceRoot":"","sources":["../../modules/restApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEhB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"restApi.d.ts","sourceRoot":"","sources":["../../modules/restApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEhB,kBAAkB,EAMlB,kBAAkB,EAElB,SAAS,EAIV,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAA+F,WAAW,EAAE,MAAM,YAAY,CAAC;AAGtI,OAAO,EAAE,iBAAiB,EAEvB,SAAS,EAAsB,sBAAsB,EAGtC,MAAM,oBAAoB,CAAC;AAuO7C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAI/E;AA+VD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,WAAW,GACtB,OAAO,CAAC;IAAC,cAAc,EAAE,sBAAsB,CAAA;CAAC,CAAC,CAyCnD;AAED,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,kBAAkB;IAElE,UAAU,EAAE,WAAW,CAAC;IACxB,iBAAiB,EAAE,WAAW,EAAE,CAAM;gBAE1B,UAAU,EAAE,WAAW;YAGrB,uBAAuB;IAerC,OAAO,CAAC,oBAAoB;IAkBtB,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,EAAC,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,MAAM;IAsBpL,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAOnD,iBAAiB,CAAC,MAAM,EAAE,WAAW;CA8yDtC"}
|
package/dist/modules/restApi.js
CHANGED
|
@@ -568,6 +568,17 @@ export default class AdminForthRestAPI {
|
|
|
568
568
|
this.loginRateLimiters = [];
|
|
569
569
|
this.adminforth = adminforth;
|
|
570
570
|
}
|
|
571
|
+
async getAdminUserFromRequest({ body, query, headers, cookies, requestUrl, response }) {
|
|
572
|
+
const result = await this.adminforth.auth.authorizeByCookies({
|
|
573
|
+
cookies,
|
|
574
|
+
response,
|
|
575
|
+
extra: { body, query, headers, cookies, requestUrl, meta: {}, response },
|
|
576
|
+
});
|
|
577
|
+
if (result.status === 'verifyFailed') {
|
|
578
|
+
throw result.error;
|
|
579
|
+
}
|
|
580
|
+
return result.status === 'ok' ? result.adminUser : null;
|
|
581
|
+
}
|
|
571
582
|
normalizeJsonColumns(resource, record) {
|
|
572
583
|
var _a;
|
|
573
584
|
for (const column of resource.columns) {
|
|
@@ -717,18 +728,23 @@ export default class AdminForthRestAPI {
|
|
|
717
728
|
server.endpoint({
|
|
718
729
|
noAuth: true,
|
|
719
730
|
method: 'GET',
|
|
720
|
-
path: '/
|
|
721
|
-
handler: async ({ tr }) => {
|
|
722
|
-
|
|
723
|
-
|
|
731
|
+
path: '/get_config',
|
|
732
|
+
handler: async ({ body, query, headers, cookies, requestUrl, tr, response }) => {
|
|
733
|
+
var _a, _b, _c, _d, _e;
|
|
734
|
+
let username = '';
|
|
735
|
+
let userFullName = '';
|
|
724
736
|
// find resource
|
|
725
737
|
if (!this.adminforth.config.auth) {
|
|
726
738
|
throw new Error('No config.auth defined');
|
|
727
739
|
}
|
|
740
|
+
response.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate');
|
|
741
|
+
response.setHeader('Pragma', 'no-cache');
|
|
742
|
+
response.setHeader('Expires', '0');
|
|
743
|
+
response.setHeader('Surrogate-Control', 'no-store');
|
|
744
|
+
const userResource = this.adminforth.config.resources.find((res) => res.resourceId === this.adminforth.config.auth.usersResourceId);
|
|
728
745
|
const usernameField = this.adminforth.config.auth.usernameField;
|
|
729
|
-
const
|
|
730
|
-
const
|
|
731
|
-
return {
|
|
746
|
+
const usernameColumn = userResource.columns.find((col) => col.name === usernameField);
|
|
747
|
+
const public_config = {
|
|
732
748
|
brandName: this.adminforth.config.customization.brandName,
|
|
733
749
|
usernameFieldName: usernameColumn.label,
|
|
734
750
|
loginBackgroundImage: this.adminforth.config.auth.loginBackgroundImage,
|
|
@@ -739,37 +755,22 @@ export default class AdminForthRestAPI {
|
|
|
739
755
|
loginPageInjections: this.adminforth.config.customization.loginPageInjections,
|
|
740
756
|
globalInjections: {
|
|
741
757
|
everyPageBottom: this.adminforth.config.customization.globalInjections.everyPageBottom,
|
|
742
|
-
sidebarTop: this.adminforth.config.customization.globalInjections.sidebarTop,
|
|
743
758
|
},
|
|
744
759
|
rememberMeDuration: this.adminforth.config.auth.rememberMeDuration,
|
|
745
760
|
singleTheme: this.adminforth.config.customization.singleTheme,
|
|
746
761
|
customHeadItems: this.adminforth.config.customization.customHeadItems,
|
|
747
762
|
};
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
handler: async ({ adminUser, cookies, tr, response }) => {
|
|
754
|
-
var _a, _b, _c, _d, _e;
|
|
755
|
-
let username = '';
|
|
756
|
-
let userFullName = '';
|
|
757
|
-
// find resource
|
|
758
|
-
if (!this.adminforth.config.auth) {
|
|
759
|
-
throw new Error('No config.auth defined');
|
|
763
|
+
// this endpoint is noAuth (login page needs public config), so here we repeat authorize flow
|
|
764
|
+
// of express server to understand whether caller is allowed to get base config as well
|
|
765
|
+
const adminUser = await this.getAdminUserFromRequest({ body, query, headers, cookies, requestUrl, response });
|
|
766
|
+
if (!adminUser) {
|
|
767
|
+
return { loggedIn: false, config: public_config };
|
|
760
768
|
}
|
|
761
|
-
response.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate');
|
|
762
|
-
response.setHeader('Pragma', 'no-cache');
|
|
763
|
-
response.setHeader('Expires', '0');
|
|
764
|
-
response.setHeader('Surrogate-Control', 'no-store');
|
|
765
769
|
const dbUser = adminUser.dbUser;
|
|
766
770
|
username = dbUser[this.adminforth.config.auth.usernameField];
|
|
767
771
|
userFullName = dbUser[this.adminforth.config.auth.userFullNameField];
|
|
768
|
-
const userResource = this.adminforth.config.resources.find((res) => res.resourceId === this.adminforth.config.auth.usersResourceId);
|
|
769
|
-
const usernameField = this.adminforth.config.auth.usernameField;
|
|
770
|
-
const usernameColumn = userResource.columns.find((col) => col.name === usernameField);
|
|
771
772
|
const userPk = dbUser[userResource.columns.find((col) => col.primaryKey).name];
|
|
772
|
-
const userAvatarUrl = await ((
|
|
773
|
+
const userAvatarUrl = await ((_c = (_b = this.adminforth.config.auth).avatarUrl) === null || _c === void 0 ? void 0 : _c.call(_b, adminUser));
|
|
773
774
|
const userData = {
|
|
774
775
|
[this.adminforth.config.auth.usernameField]: username,
|
|
775
776
|
[this.adminforth.config.auth.userFullNameField]: userFullName,
|
|
@@ -808,7 +809,7 @@ export default class AdminForthRestAPI {
|
|
|
808
809
|
}
|
|
809
810
|
newMenu.push(newMenuItem);
|
|
810
811
|
}
|
|
811
|
-
const announcementBadge = (
|
|
812
|
+
const announcementBadge = (_e = (_d = this.adminforth.config.customization).announcementBadge) === null || _e === void 0 ? void 0 : _e.call(_d, adminUser);
|
|
812
813
|
const settingPages = [];
|
|
813
814
|
for (const settingPage of this.adminforth.config.auth.userMenuSettingsPages || []) {
|
|
814
815
|
if (settingPage.isVisible) {
|
|
@@ -818,19 +819,6 @@ export default class AdminForthRestAPI {
|
|
|
818
819
|
}
|
|
819
820
|
const usersResource = this.adminforth.config.resources.find((res) => res.resourceId === this.adminforth.config.auth.usersResourceId);
|
|
820
821
|
const defaultUserExists = await this.adminforth.resource(usersResource.resourceId).get(Filters.EQ(usernameField, 'adminforth')) ? true : false;
|
|
821
|
-
const publicPart = {
|
|
822
|
-
brandName: this.adminforth.config.customization.brandName,
|
|
823
|
-
usernameFieldName: usernameColumn.label,
|
|
824
|
-
loginBackgroundImage: this.adminforth.config.auth.loginBackgroundImage,
|
|
825
|
-
loginBackgroundPosition: this.adminforth.config.auth.loginBackgroundPosition,
|
|
826
|
-
removeBackgroundBlendMode: this.adminforth.config.auth.removeBackgroundBlendMode,
|
|
827
|
-
title: (_e = this.adminforth.config.customization) === null || _e === void 0 ? void 0 : _e.title,
|
|
828
|
-
demoCredentials: this.adminforth.config.auth.demoCredentials,
|
|
829
|
-
loginPageInjections: this.adminforth.config.customization.loginPageInjections,
|
|
830
|
-
rememberMeDuration: this.adminforth.config.auth.rememberMeDuration,
|
|
831
|
-
singleTheme: this.adminforth.config.customization.singleTheme,
|
|
832
|
-
customHeadItems: this.adminforth.config.customization.customHeadItems,
|
|
833
|
-
};
|
|
834
822
|
const loggedInPart = {
|
|
835
823
|
showBrandNameInSidebar: this.adminforth.config.customization.showBrandNameInSidebar,
|
|
836
824
|
showBrandLogoInSidebar: this.adminforth.config.customization.showBrandLogoInSidebar,
|
|
@@ -897,13 +885,14 @@ export default class AdminForthRestAPI {
|
|
|
897
885
|
}
|
|
898
886
|
}
|
|
899
887
|
return {
|
|
888
|
+
loggedIn: true,
|
|
889
|
+
config: Object.assign(Object.assign({}, public_config), loggedInPart),
|
|
900
890
|
user: userData,
|
|
901
891
|
resources: this.adminforth.config.resources.map((res) => ({
|
|
902
892
|
resourceId: res.resourceId,
|
|
903
893
|
label: res.label,
|
|
904
894
|
})),
|
|
905
895
|
menu: newMenu,
|
|
906
|
-
config: Object.assign(Object.assign({}, publicPart), loggedInPart),
|
|
907
896
|
adminUser,
|
|
908
897
|
version: ADMINFORTH_VERSION,
|
|
909
898
|
};
|