@nymphjs/tilmeld-client 1.0.0-beta.11 → 1.0.0-beta.111
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/CHANGELOG.md +437 -0
- package/README.md +2 -2
- package/{lib → dist}/Group.d.ts +40 -5
- package/{lib → dist}/Group.js +21 -16
- package/dist/Group.js.map +1 -0
- package/dist/Tilmeld.types.d.ts +12 -0
- package/dist/Tilmeld.types.js +2 -0
- package/dist/Tilmeld.types.js.map +1 -0
- package/{lib → dist}/User.d.ts +130 -5
- package/{lib → dist}/User.js +76 -32
- package/dist/User.js.map +1 -0
- package/dist/helpers.d.ts +58 -0
- package/{lib → dist}/helpers.js +23 -17
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.js +257 -0
- package/dist/index.test.js.map +1 -0
- package/jest.config.js +11 -2
- package/package.json +25 -28
- package/src/Group.ts +28 -17
- package/src/Tilmeld.types.ts +13 -0
- package/src/User.ts +153 -57
- package/src/helpers.ts +25 -12
- package/src/index.test.ts +333 -0
- package/src/index.ts +7 -5
- package/tsconfig.json +6 -4
- package/typedoc.json +4 -0
- package/lib/Group.js.map +0 -1
- package/lib/User.js.map +0 -1
- package/lib/helpers.d.ts +0 -46
- package/lib/helpers.js.map +0 -1
- package/lib/index.d.ts +0 -7
- package/lib/index.js +0 -28
- package/lib/index.js.map +0 -1
- package/webpack.config.js +0 -31
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://@nymphjs/tilmeld-client/webpack/universalModuleDefinition","webpack://@nymphjs/tilmeld-client/./lib/Group.js","webpack://@nymphjs/tilmeld-client/./lib/User.js","webpack://@nymphjs/tilmeld-client/./lib/helpers.js","webpack://@nymphjs/tilmeld-client/./lib/index.js","webpack://@nymphjs/tilmeld-client/external umd \"@nymphjs/client\"","webpack://@nymphjs/tilmeld-client/webpack/bootstrap","webpack://@nymphjs/tilmeld-client/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@nymphjs/client\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@nymphjs/client\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@nymphjs/tilmeld-client\"] = factory(require(\"@nymphjs/client\"));\n\telse\n\t\troot[\"@nymphjs/tilmeld-client\"] = factory(root[\"@nymphjs/client\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__778__) => {\nreturn ","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst client_1 = require(\"@nymphjs/client\");\nclass Group extends client_1.Entity {\n constructor(guid) {\n super(guid);\n if (guid == null) {\n this.$data.enabled = true;\n this.$data.abilities = [];\n }\n }\n static async factory(guid) {\n return (await super.factory(guid));\n }\n static factorySync(guid) {\n return super.factorySync(guid);\n }\n async $checkGroupname() {\n return await this.$serverCall('$checkGroupname', [], true);\n }\n async $checkEmail() {\n return await this.$serverCall('$checkEmail', [], true);\n }\n async $getAvatar() {\n return await this.$serverCall('$getAvatar', [], true);\n }\n async $getChildren() {\n return await this.$serverCall('$getChildren', [], true);\n }\n async $getDescendants(andSelf = false) {\n return await this.$serverCall('$getDescendants', [andSelf], true);\n }\n async $getLevel() {\n return await this.$serverCall('$getLevel', [], true);\n }\n async $isDescendant(givenGroup) {\n return await this.$serverCall('$isDescendant', [givenGroup], true);\n }\n static async getPrimaryGroups(options, selectors) {\n return await this.serverCallStatic('getPrimaryGroups', [\n { options, class: this.class },\n selectors,\n ]);\n }\n static async getSecondaryGroups(options, selectors) {\n return await this.serverCallStatic('getSecondaryGroups', [\n { options, class: this.class },\n selectors,\n ]);\n }\n}\nexports.default = Group;\nGroup.class = 'Group';\n//# sourceMappingURL=Group.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst client_1 = require(\"@nymphjs/client\");\nlet currentToken = null;\nclass User extends client_1.Entity {\n static init(nymph) {\n let store = {\n registerCallbacks: [],\n loginCallbacks: [],\n logoutCallbacks: [],\n };\n if (User.stores.has(nymph)) {\n const storeVal = User.stores.get(nymph);\n if (storeVal) {\n store = storeVal;\n }\n }\n User.stores.set(nymph, store);\n if (store.removeNymphResponseListener) {\n store.removeNymphResponseListener();\n }\n store.removeNymphResponseListener = nymph.on('response', (response) => this.handleToken(response));\n this.handleToken();\n }\n constructor(guid) {\n super(guid);\n if (guid == null) {\n this.$data.enabled = true;\n this.$data.abilities = [];\n this.$data.groups = [];\n this.$data.inheritAbilities = true;\n }\n }\n static async factory(guid) {\n return (await super.factory(guid));\n }\n static async factoryUsername(username) {\n const entity = new this();\n if (username != null) {\n const entity = await this.nymph.getEntity({\n class: this,\n }, {\n type: '&',\n ilike: ['username', username.replace(/([\\\\%_])/g, (s) => `\\\\${s}`)],\n });\n if (entity != null) {\n return entity;\n }\n }\n return entity;\n }\n static factorySync(guid) {\n return super.factorySync(guid);\n }\n async $checkUsername() {\n return await this.$serverCall('$checkUsername', [], true);\n }\n async $checkEmail() {\n return await this.$serverCall('$checkEmail', [], true);\n }\n async $checkPhone() {\n return await this.$serverCall('$checkPhone', [], true);\n }\n async $getAvatar() {\n return await this.$serverCall('$getAvatar', [], true);\n }\n async $register(data) {\n const store = User.stores.get(this.$nymph);\n if (store == null) {\n throw new Error('This user class was never initialized with an instance of Nymph');\n }\n const response = await this.$serverCall('$register', [data]);\n if (response.result) {\n for (let i = 0; i < store.registerCallbacks.length; i++) {\n store.registerCallbacks[i] && store.registerCallbacks[i](this);\n }\n }\n if (response.loggedin) {\n this.constructor.handleToken();\n for (let i = 0; i < store.loginCallbacks.length; i++) {\n store.loginCallbacks[i] && store.loginCallbacks[i](this);\n }\n }\n return response;\n }\n async $logout() {\n const store = User.stores.get(this.$nymph);\n if (store == null) {\n throw new Error('This user class was never initialized with an instance of Nymph');\n }\n const response = await this.$serverCall('$logout', []);\n if (response.result) {\n this.constructor.handleToken();\n for (let i = 0; i < store.logoutCallbacks.length; i++) {\n store.logoutCallbacks[i] && store.logoutCallbacks[i](this);\n }\n }\n return response;\n }\n async $gatekeeper(ability) {\n return await this.$serverCall('$gatekeeper', [ability], true);\n }\n async $changePassword(data) {\n return await this.$serverCall('$changePassword', [data]);\n }\n static async current(returnObjectIfNotExist) {\n const currentUser = await this.serverCallStatic('current', [false]);\n if (currentUser == null) {\n return returnObjectIfNotExist ? this.factorySync() : null;\n }\n return currentUser;\n }\n static async loginUser(data) {\n const store = User.stores.get(this.nymph);\n if (store == null) {\n throw new Error('This user class was never initialized with an instance of Nymph');\n }\n const response = await this.serverCallStatic('loginUser', [data]);\n if (response.result) {\n this.handleToken();\n for (let i = 0; i < store.loginCallbacks.length; i++) {\n store.loginCallbacks[i] && store.loginCallbacks[i](response.user);\n }\n }\n return response;\n }\n static async sendRecovery(data) {\n return await this.serverCallStatic('sendRecovery', [data]);\n }\n static async recover(data) {\n return await this.serverCallStatic('recover', [data]);\n }\n static async getClientConfig() {\n const store = User.stores.get(this.nymph);\n if (store == null) {\n throw new Error('This user class was never initialized with an instance of Nymph');\n }\n if (store.clientConfig) {\n return store.clientConfig;\n }\n if (!store.clientConfigPromise) {\n store.clientConfigPromise = this.serverCallStatic('getClientConfig', []).then((config) => {\n store.clientConfig = config;\n store.clientConfigPromise = undefined;\n return config;\n });\n }\n return await store.clientConfigPromise;\n }\n static handleToken(response) {\n let token = null;\n const authCookiePattern = /(?:(?:^|.*;\\s*)TILMELDAUTH\\s*=\\s*([^;]*).*$)|^.*$/;\n if (response && response.headers.has('X-TILMELDAUTH')) {\n token = response.headers.get('X-TILMELDAUTH');\n }\n else if (typeof document !== 'undefined' &&\n document.cookie.match(authCookiePattern)) {\n token = document.cookie.replace(authCookiePattern, '$1');\n }\n else {\n return;\n }\n if (currentToken !== token) {\n if (token == null || token === '') {\n if (currentToken != null) {\n this.nymph.setXsrfToken(null);\n if (this.nymph.pubsub) {\n this.nymph.pubsub.setToken(null);\n }\n currentToken = null;\n }\n }\n else {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const json = typeof atob === 'undefined'\n ? Buffer.from(base64, 'base64').toString('binary')\n : atob(base64);\n const jwt = JSON.parse(json);\n this.nymph.setXsrfToken(jwt.xsrfToken);\n if (this.nymph.pubsub) {\n this.nymph.pubsub.setToken(token);\n }\n currentToken = token;\n }\n }\n }\n static on(event, callback) {\n const store = User.stores.get(this.nymph);\n if (store == null) {\n throw new Error('This user class was never initialized with an instance of Nymph');\n }\n const prop = (event + 'Callbacks');\n if (!(prop in store)) {\n throw new Error('Invalid event type.');\n }\n store[prop].push(callback);\n return () => this.off(event, callback);\n }\n static off(event, callback) {\n const store = User.stores.get(this.nymph);\n if (store == null) {\n throw new Error('This user class was never initialized with an instance of Nymph');\n }\n const prop = (event + 'Callbacks');\n if (!(prop in store)) {\n return false;\n }\n const i = store[prop].indexOf(callback);\n if (i > -1) {\n store[prop].splice(i, 1);\n }\n return true;\n }\n}\nexports.default = User;\nUser.stores = new WeakMap();\nUser.class = 'User';\n//# sourceMappingURL=User.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkUsername = exports.register = exports.login = void 0;\nasync function login(User, username, password, additionalData) {\n if (username === '') {\n throw new Error('You need to enter a username.');\n }\n if (password === '') {\n throw new Error('You need to enter a password');\n }\n try {\n const { result, ...response } = await User.loginUser({\n username,\n password,\n ...(additionalData ? { additionalData } : {}),\n });\n if (!result) {\n throw new Error(response.message);\n }\n return response;\n }\n catch (e) {\n throw new Error(e?.message ?? 'An error occurred.');\n }\n}\nexports.login = login;\nasync function register(User, userDetails, clientConfig) {\n if (userDetails.username === '') {\n throw new Error('You need to enter a username.');\n }\n if (!userDetails.usernameVerified) {\n throw new Error('The username you entered is not valid.');\n }\n if (userDetails.password !== userDetails.password2) {\n throw new Error('Your passwords do not match.');\n }\n if (userDetails.password === '') {\n throw new Error('You need to enter a password');\n }\n let user = User.factorySync();\n user.username = userDetails.username;\n const config = clientConfig || (await User.getClientConfig());\n if (config.emailUsernames) {\n user.email = userDetails.username;\n }\n else if (config.regFields.indexOf('email') !== -1) {\n user.email = userDetails.email;\n }\n if (config.regFields.indexOf('name') !== -1) {\n user.nameFirst = userDetails.nameFirst;\n user.nameLast = userDetails.nameLast;\n }\n if (config.regFields.indexOf('phone') !== -1) {\n user.phone = userDetails.phone;\n }\n try {\n const { result, ...response } = await user.$register({\n password: userDetails.password,\n ...(userDetails.additionalData\n ? { additionalData: userDetails.additionalData }\n : {}),\n });\n if (!result) {\n throw new Error(response.message);\n }\n return { ...response, user };\n }\n catch (e) {\n throw new Error(e?.message ?? 'An error occurred.');\n }\n}\nexports.register = register;\nasync function checkUsername(User, username, clientConfig) {\n let user = User.factorySync();\n user.username = username;\n const config = clientConfig || (await User.getClientConfig());\n if (config.emailUsernames) {\n user.email = username;\n }\n try {\n const { result, ...response } = await user.$checkUsername();\n if (!result) {\n throw new Error(response.message);\n }\n return response;\n }\n catch (e) {\n throw new Error(e?.message ?? 'An error occurred.');\n }\n}\nexports.checkUsername = checkUsername;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.User = exports.Group = void 0;\n__exportStar(require(\"./Group\"), exports);\nconst Group_1 = __importDefault(require(\"./Group\"));\nexports.Group = Group_1.default;\n__exportStar(require(\"./helpers\"), exports);\n__exportStar(require(\"./User\"), exports);\nconst User_1 = __importDefault(require(\"./User\"));\nexports.User = User_1.default;\n//# sourceMappingURL=index.js.map","module.exports = __WEBPACK_EXTERNAL_MODULE__778__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(568);\n"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__778__","Object","defineProperty","value","client_1","Group","Entity","constructor","guid","super","$data","enabled","abilities","factorySync","$serverCall","andSelf","givenGroup","options","selectors","serverCallStatic","class","currentToken","User","nymph","store","registerCallbacks","loginCallbacks","logoutCallbacks","stores","has","storeVal","get","set","removeNymphResponseListener","on","response","handleToken","groups","inheritAbilities","username","entity","getEntity","type","ilike","replace","s","data","$nymph","Error","result","i","length","loggedin","ability","returnObjectIfNotExist","currentUser","user","clientConfig","clientConfigPromise","then","config","undefined","token","authCookiePattern","headers","document","cookie","match","setXsrfToken","pubsub","setToken","base64","split","json","atob","Buffer","from","toString","jwt","JSON","parse","xsrfToken","event","callback","prop","push","off","indexOf","splice","WeakMap","checkUsername","register","login","async","password","additionalData","loginUser","message","e","userDetails","usernameVerified","password2","getClientConfig","emailUsernames","email","regFields","nameFirst","nameLast","phone","$register","$checkUsername","__createBinding","create","o","m","k","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","__exportStar","p","prototype","hasOwnProperty","call","__importDefault","mod","Group_1","default","User_1","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,cAAc,cAAc,CAAC;AAE7B,cAAc,oBAAoB,CAAC;AAEnC,cAAc,WAAW,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import SQLite3Driver from '@nymphjs/driver-sqlite3';
|
|
3
|
+
import { Nymph as NymphServer } from '@nymphjs/nymph';
|
|
4
|
+
import { Nymph } from '@nymphjs/client';
|
|
5
|
+
import { Tilmeld, User as UserModelClass, Group as GroupModelClass, } from '@nymphjs/tilmeld';
|
|
6
|
+
import createServer from '@nymphjs/server';
|
|
7
|
+
import { User as UserClass, Group as GroupClass, } from './index.js';
|
|
8
|
+
describe('Tilmeld Client', () => {
|
|
9
|
+
let server = undefined;
|
|
10
|
+
afterEach(async () => {
|
|
11
|
+
await new Promise((resolve) => {
|
|
12
|
+
if (server) {
|
|
13
|
+
server.close(() => resolve()); // avoid jest open handle error
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
resolve();
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
async function createNymphTilmeldServer(config, clientConfig) {
|
|
21
|
+
// Wait for next event loop.
|
|
22
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
23
|
+
const sqliteConfig = {
|
|
24
|
+
filename: ':memory:',
|
|
25
|
+
};
|
|
26
|
+
const tilmeld = new Tilmeld({
|
|
27
|
+
jwtSecret: 'supersecrettestingsecret',
|
|
28
|
+
allowRegistration: true,
|
|
29
|
+
verifyEmail: false,
|
|
30
|
+
emailUsernames: false,
|
|
31
|
+
...config,
|
|
32
|
+
});
|
|
33
|
+
const nymphServer = new NymphServer({}, new SQLite3Driver(sqliteConfig), tilmeld);
|
|
34
|
+
const UserModel = nymphServer.addEntityClass(UserModelClass);
|
|
35
|
+
const GroupModel = nymphServer.addEntityClass(GroupModelClass);
|
|
36
|
+
const app = express();
|
|
37
|
+
app.use('/test', createServer(nymphServer));
|
|
38
|
+
server = app.listen(5084);
|
|
39
|
+
const nymph = new Nymph({
|
|
40
|
+
restUrl: 'http://localhost:5084/test/',
|
|
41
|
+
...(clientConfig ?? {}),
|
|
42
|
+
});
|
|
43
|
+
const User = nymph.addEntityClass(UserClass);
|
|
44
|
+
User.init(nymph);
|
|
45
|
+
const Group = nymph.addEntityClass(GroupClass);
|
|
46
|
+
return {
|
|
47
|
+
tilmeld,
|
|
48
|
+
nymphServer,
|
|
49
|
+
UserModel,
|
|
50
|
+
GroupModel,
|
|
51
|
+
app,
|
|
52
|
+
nymph,
|
|
53
|
+
User,
|
|
54
|
+
Group,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
async function createAdmin(User) {
|
|
58
|
+
const admin = User.factorySync();
|
|
59
|
+
admin.username = 'admin';
|
|
60
|
+
admin.email = 'root@localhost';
|
|
61
|
+
admin.nameFirst = 'Admin';
|
|
62
|
+
admin.nameLast = 'User';
|
|
63
|
+
try {
|
|
64
|
+
const result = await admin.$register({
|
|
65
|
+
password: 'supersecretadminpassword',
|
|
66
|
+
});
|
|
67
|
+
return { result, admin };
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
console.error('Error creating admin:', e);
|
|
71
|
+
throw e;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async function createUser(User) {
|
|
75
|
+
const user = User.factorySync();
|
|
76
|
+
user.username = 'user';
|
|
77
|
+
user.email = 'user@localhost';
|
|
78
|
+
user.nameFirst = 'Some';
|
|
79
|
+
user.nameLast = 'User';
|
|
80
|
+
try {
|
|
81
|
+
const result = await user.$register({
|
|
82
|
+
password: 'supersecretuserpassword',
|
|
83
|
+
});
|
|
84
|
+
return { result, user };
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
console.error('Error creating user:', e);
|
|
88
|
+
throw e;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
it('get client config', async () => {
|
|
92
|
+
const { User } = await createNymphTilmeldServer();
|
|
93
|
+
const result = await User.getClientConfig();
|
|
94
|
+
expect(result).not.toBeNull();
|
|
95
|
+
expect(result.verifyEmail).toBeFalsy();
|
|
96
|
+
});
|
|
97
|
+
it('produce errors when register data is incorrect', async () => {
|
|
98
|
+
const { User } = await createNymphTilmeldServer();
|
|
99
|
+
try {
|
|
100
|
+
const admin = User.factorySync();
|
|
101
|
+
let result = await admin.$register({
|
|
102
|
+
password: 'supersecretadminpassword',
|
|
103
|
+
});
|
|
104
|
+
expect(result.result).toBeFalsy();
|
|
105
|
+
expect(result.loggedin).toBeFalsy();
|
|
106
|
+
expect(result.message).toEqual('Please specify a username.');
|
|
107
|
+
expect(admin.guid).toBeNull();
|
|
108
|
+
admin.username = 'admin';
|
|
109
|
+
try {
|
|
110
|
+
expect((result = await admin.$register({
|
|
111
|
+
password: 'supersecretadminpassword',
|
|
112
|
+
}))).toThrow();
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
expect(e.status).toEqual(400);
|
|
116
|
+
expect(e.message).toEqual('Please specify a valid email.');
|
|
117
|
+
}
|
|
118
|
+
admin.email = 'root@localhost';
|
|
119
|
+
try {
|
|
120
|
+
expect((result = await admin.$register({
|
|
121
|
+
password: 'supersecretadminpassword',
|
|
122
|
+
}))).toThrow();
|
|
123
|
+
}
|
|
124
|
+
catch (e) {
|
|
125
|
+
expect(e.status).toEqual(400);
|
|
126
|
+
expect(e.message).toEqual('Invalid Group: "name" is required');
|
|
127
|
+
}
|
|
128
|
+
expect(admin.guid).toBeNull();
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
console.error('Error running test: ', e);
|
|
132
|
+
throw e;
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
it('create admin user', async () => {
|
|
136
|
+
const { User } = await createNymphTilmeldServer();
|
|
137
|
+
try {
|
|
138
|
+
const { result, admin } = await createAdmin(User);
|
|
139
|
+
expect(result.result).toBeTruthy();
|
|
140
|
+
expect(result.loggedin).toBeTruthy();
|
|
141
|
+
expect(result.message).toEqual("You're now registered and logged in!");
|
|
142
|
+
expect(admin.guid).not.toBeNull();
|
|
143
|
+
expect(typeof admin.guid).toEqual('string');
|
|
144
|
+
const permission = await admin.$gatekeeper('system/admin');
|
|
145
|
+
expect(permission).toBeTruthy();
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
console.error('Error running test: ', e);
|
|
149
|
+
throw e;
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
it('logout', async () => {
|
|
153
|
+
const { User } = await createNymphTilmeldServer();
|
|
154
|
+
try {
|
|
155
|
+
const { admin } = await createAdmin(User);
|
|
156
|
+
const user1 = await User.current();
|
|
157
|
+
expect(user1?.guid).toEqual(admin.guid);
|
|
158
|
+
expect((await admin.$logout()).result).toBeTruthy();
|
|
159
|
+
const user2 = await User.current();
|
|
160
|
+
expect(user2).toBeNull();
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
console.error('Error running test: ', e);
|
|
164
|
+
throw e;
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
it('second user', async () => {
|
|
168
|
+
const { User } = await createNymphTilmeldServer();
|
|
169
|
+
try {
|
|
170
|
+
const { admin } = await createAdmin(User);
|
|
171
|
+
expect((await admin.$logout()).result).toBeTruthy();
|
|
172
|
+
const { result, user } = await createUser(User);
|
|
173
|
+
expect(result.result).toBeTruthy();
|
|
174
|
+
expect(result.loggedin).toBeTruthy();
|
|
175
|
+
expect(result.message).toEqual("You're now registered and logged in!");
|
|
176
|
+
expect(user.guid).not.toBeNull();
|
|
177
|
+
expect(typeof user.guid).toEqual('string');
|
|
178
|
+
const permission = await user.$gatekeeper('system/admin');
|
|
179
|
+
expect(permission).toBeFalsy();
|
|
180
|
+
}
|
|
181
|
+
catch (e) {
|
|
182
|
+
console.error('Error running test: ', e);
|
|
183
|
+
throw e;
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
it("doesn't issue renewed token when not needed", async () => {
|
|
187
|
+
const { User, nymph } = await createNymphTilmeldServer({
|
|
188
|
+
jwtExpire: 5,
|
|
189
|
+
jwtRenew: 0,
|
|
190
|
+
});
|
|
191
|
+
let responses = 0;
|
|
192
|
+
nymph.on('response', (response) => {
|
|
193
|
+
if (responses === 0) {
|
|
194
|
+
expect(response.headers.get('set-cookie')).toMatch(/^TILMELDAUTH=[^;]+; Max-Age=5; Domain=localhost; Path=\/; Expires=[^;]+; SameSite=Strict$/);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
expect(response.headers.has('set-cookie')).toBeFalsy();
|
|
198
|
+
}
|
|
199
|
+
responses++;
|
|
200
|
+
});
|
|
201
|
+
try {
|
|
202
|
+
const { admin } = await createAdmin(User);
|
|
203
|
+
expect(await admin.$gatekeeper()).toBeTruthy();
|
|
204
|
+
expect(responses).toEqual(2);
|
|
205
|
+
}
|
|
206
|
+
catch (e) {
|
|
207
|
+
console.error('Error running test: ', e);
|
|
208
|
+
throw e;
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
it('issues renewed token when needed', async () => {
|
|
212
|
+
const { User, nymph } = await createNymphTilmeldServer({
|
|
213
|
+
jwtExpire: 5,
|
|
214
|
+
jwtRenew: 5,
|
|
215
|
+
});
|
|
216
|
+
let responses = 0;
|
|
217
|
+
nymph.on('response', (response) => {
|
|
218
|
+
expect(response.headers.get('set-cookie')).toMatch(/^TILMELDAUTH=[^;]+; Max-Age=5; Domain=localhost; Path=\/; Expires=[^;]+; SameSite=Strict$/);
|
|
219
|
+
responses++;
|
|
220
|
+
});
|
|
221
|
+
try {
|
|
222
|
+
const { admin } = await createAdmin(User);
|
|
223
|
+
expect(await admin.$gatekeeper()).toBeTruthy();
|
|
224
|
+
expect(responses).toEqual(2);
|
|
225
|
+
}
|
|
226
|
+
catch (e) {
|
|
227
|
+
console.error('Error running test: ', e);
|
|
228
|
+
throw e;
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
it("doesn't issue renewed token when requested", async () => {
|
|
232
|
+
const { User, nymph } = await createNymphTilmeldServer({
|
|
233
|
+
jwtExpire: 5,
|
|
234
|
+
jwtRenew: 5,
|
|
235
|
+
}, { renewTokens: false });
|
|
236
|
+
let responses = 0;
|
|
237
|
+
nymph.on('response', (response) => {
|
|
238
|
+
if (responses === 0) {
|
|
239
|
+
expect(response.headers.get('set-cookie')).toMatch(/^TILMELDAUTH=[^;]+; Max-Age=5; Domain=localhost; Path=\/; Expires=[^;]+; SameSite=Strict$/);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
expect(response.headers.has('set-cookie')).toBeFalsy();
|
|
243
|
+
}
|
|
244
|
+
responses++;
|
|
245
|
+
});
|
|
246
|
+
try {
|
|
247
|
+
const { admin } = await createAdmin(User);
|
|
248
|
+
expect(await admin.$gatekeeper()).toBeTruthy();
|
|
249
|
+
expect(responses).toEqual(2);
|
|
250
|
+
}
|
|
251
|
+
catch (e) {
|
|
252
|
+
console.error('Error running test: ', e);
|
|
253
|
+
throw e;
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EACL,OAAO,EAEP,IAAI,IAAI,cAAc,EACtB,KAAK,IAAI,eAAe,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EACL,IAAI,IAAI,SAAS,EACjB,KAAK,IAAI,UAAU,GAEpB,MAAM,YAAY,CAAC;AAEpB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,MAAM,GAAuB,SAAS,CAAC;IAE3C,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,+BAA+B;YAChE,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,wBAAwB,CACrC,MAA+B,EAC/B,YAAoC;QAEpC,4BAA4B;QAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAExD,MAAM,YAAY,GAAG;YACnB,QAAQ,EAAE,UAAU;SACrB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;YAC1B,SAAS,EAAE,0BAA0B;YACrC,iBAAiB,EAAE,IAAI;YACvB,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,KAAK;YACrB,GAAG,MAAM;SACV,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,WAAW,CACjC,EAAE,EACF,IAAI,aAAa,CAAC,YAAY,CAAC,EAC/B,OAAO,CACR,CAAC;QACF,MAAM,SAAS,GAAG,WAAW,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAE/D,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE1B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,OAAO,EAAE,6BAA6B;YACtC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;SACxB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAE/C,OAAO;YACL,OAAO;YACP,WAAW;YACX,SAAS;YACT,UAAU;YACV,GAAG;YACH,KAAK;YACL,IAAI;YACJ,KAAK;SACN,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,WAAW,CAAC,IAAsB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAiC,CAAC;QAChE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QACzB,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC;QAC/B,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;QAC1B,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QAExB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;gBACnC,QAAQ,EAAE,0BAA0B;aACrC,CAAC,CAAC;YAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,IAAsB;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAiC,CAAC;QAC/D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;gBAClC,QAAQ,EAAE,yBAAyB;aACpC,CAAC,CAAC;YAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,wBAAwB,EAAE,CAAC;QAElD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,wBAAwB,EAAE,CAAC;QAElD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAiC,CAAC;YAEhE,IAAI,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;gBACjC,QAAQ,EAAE,0BAA0B;aACrC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAE9B,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,CACJ,CAAC,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;oBAC9B,QAAQ,EAAE,0BAA0B;iBACrC,CAAC,CAAC,CACJ,CAAC,OAAO,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9B,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;YAC7D,CAAC;YAED,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,CACJ,CAAC,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;oBAC9B,QAAQ,EAAE,0BAA0B;iBACrC,CAAC,CAAC,CACJ,CAAC,OAAO,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9B,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,wBAAwB,EAAE,CAAC;QAElD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;YAEvE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE5C,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAE3D,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACtB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,wBAAwB,EAAE,CAAC;QAElD,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAEnC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAExC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;YAEpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAEnC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,wBAAwB,EAAE,CAAC;QAElD,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;YAEpD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;YAEvE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE3C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAE1D,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,wBAAwB,CAAC;YACrD,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;QAEH,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAChD,2FAA2F,CAC5F,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACzD,CAAC;YACD,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;YAE/C,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,wBAAwB,CAAC;YACrD,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;QAEH,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAChD,2FAA2F,CAC5F,CAAC;YACF,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;YAE/C,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,wBAAwB,CACpD;YACE,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC;SACZ,EACD,EAAE,WAAW,EAAE,KAAK,EAAE,CACvB,CAAC;QAEF,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAChD,2FAA2F,CAC5F,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACzD,CAAC;YACD,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YAE1C,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;YAE/C,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/jest.config.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
+
import { createDefaultEsmPreset } from 'ts-jest';
|
|
2
|
+
|
|
3
|
+
const presetConfig = createDefaultEsmPreset();
|
|
4
|
+
|
|
1
5
|
/** @type {import('ts-jest').JestConfigWithTsJest} */
|
|
2
|
-
|
|
3
|
-
|
|
6
|
+
const jestConfig = {
|
|
7
|
+
...presetConfig,
|
|
4
8
|
testEnvironment: 'node',
|
|
5
9
|
rootDir: 'src/',
|
|
10
|
+
moduleNameMapper: {
|
|
11
|
+
'^(\\.|\\.\\.)\\/(.+)\\.js': '$1/$2',
|
|
12
|
+
},
|
|
6
13
|
};
|
|
14
|
+
|
|
15
|
+
export default jestConfig;
|
package/package.json
CHANGED
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nymphjs/tilmeld-client",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
6
|
-
"main": "
|
|
7
|
-
"types": "
|
|
3
|
+
"version": "1.0.0-beta.111",
|
|
4
|
+
"description": "Nymph.js - Tilmeld Client",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"nymph",
|
|
10
10
|
"ORM",
|
|
11
11
|
"object relational mapper"
|
|
12
12
|
],
|
|
13
13
|
"scripts": {
|
|
14
|
-
"clean": "
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"watch:ts": "tsc --watch",
|
|
21
|
-
"watch:js": "webpack --watch",
|
|
22
|
-
"prepare": "npm run clean && npm run build",
|
|
23
|
-
"test": "jest --detectOpenHandles",
|
|
24
|
-
"test:watch": "jest --watch"
|
|
14
|
+
"clean": "test -d dist && rm -r dist || true",
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"watch": "tsc --watch",
|
|
17
|
+
"prepublish": "npm run clean && npm run build",
|
|
18
|
+
"test": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" npx jest",
|
|
19
|
+
"test:watch": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" npx jest --watch"
|
|
25
20
|
},
|
|
26
21
|
"publishConfig": {
|
|
27
22
|
"access": "public"
|
|
@@ -35,18 +30,20 @@
|
|
|
35
30
|
"url": "https://github.com/sciactive/nymphjs/issues"
|
|
36
31
|
},
|
|
37
32
|
"license": "Apache-2.0",
|
|
38
|
-
"devDependencies": {
|
|
39
|
-
"@tsconfig/recommended": "^1.0.2",
|
|
40
|
-
"@types/jest": "^29.4.0",
|
|
41
|
-
"jest": "^29.4.3",
|
|
42
|
-
"ts-jest": "^29.0.5",
|
|
43
|
-
"ts-loader": "^9.4.2",
|
|
44
|
-
"typescript": "^4.9.5",
|
|
45
|
-
"webpack": "^5.75.0",
|
|
46
|
-
"webpack-cli": "^5.0.1"
|
|
47
|
-
},
|
|
48
33
|
"dependencies": {
|
|
49
|
-
"@nymphjs/client": "^1.0.0-beta.
|
|
34
|
+
"@nymphjs/client": "^1.0.0-beta.111"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@nymphjs/driver-sqlite3": "^1.0.0-beta.111",
|
|
38
|
+
"@nymphjs/nymph": "^1.0.0-beta.111",
|
|
39
|
+
"@nymphjs/server": "^1.0.0-beta.111",
|
|
40
|
+
"@nymphjs/tilmeld": "^1.0.0-beta.111",
|
|
41
|
+
"@tsconfig/recommended": "^1.0.13",
|
|
42
|
+
"@types/jest": "^30.0.0",
|
|
43
|
+
"jest": "^30.2.0",
|
|
44
|
+
"ts-jest": "^29.4.6",
|
|
45
|
+
"ts-node": "^10.9.2",
|
|
46
|
+
"typescript": "^5.9.3"
|
|
50
47
|
},
|
|
51
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "8028358367d8fd89bb434f122b243bec4c71f2e1"
|
|
52
49
|
}
|
package/src/Group.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Entity, Options, Selector } from '@nymphjs/client';
|
|
2
2
|
|
|
3
|
-
import type User from './User';
|
|
4
|
-
import type { CurrentUserData } from './User';
|
|
3
|
+
import type User from './User.js';
|
|
4
|
+
import type { CurrentUserData } from './User.js';
|
|
5
5
|
|
|
6
6
|
export type GroupData = {
|
|
7
7
|
/**
|
|
@@ -64,21 +64,32 @@ export default class Group extends Entity<GroupData> {
|
|
|
64
64
|
// The name of the server class
|
|
65
65
|
public static class = 'Group';
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
static async factoryGroupname(
|
|
68
|
+
groupname?: string,
|
|
69
|
+
): Promise<Group & GroupData> {
|
|
70
|
+
const entity = new this();
|
|
71
|
+
if (groupname != null) {
|
|
72
|
+
const entity = await this.nymph.getEntity(
|
|
73
|
+
{
|
|
74
|
+
class: this,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
type: '&',
|
|
78
|
+
ilike: ['groupname', groupname.replace(/([\\%_])/g, (s) => `\\${s}`)],
|
|
79
|
+
},
|
|
80
|
+
);
|
|
81
|
+
if (entity != null) {
|
|
82
|
+
return entity;
|
|
83
|
+
}
|
|
73
84
|
}
|
|
85
|
+
return entity;
|
|
74
86
|
}
|
|
75
87
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
88
|
+
constructor() {
|
|
89
|
+
super();
|
|
79
90
|
|
|
80
|
-
|
|
81
|
-
|
|
91
|
+
this.$data.enabled = true;
|
|
92
|
+
(this.$data as CurrentGroupData).abilities = [];
|
|
82
93
|
}
|
|
83
94
|
|
|
84
95
|
public async $checkGroupname(): Promise<{
|
|
@@ -101,7 +112,7 @@ export default class Group extends Entity<GroupData> {
|
|
|
101
112
|
}
|
|
102
113
|
|
|
103
114
|
public async $getDescendants(
|
|
104
|
-
andSelf = false
|
|
115
|
+
andSelf = false,
|
|
105
116
|
): Promise<(Group & GroupData)[]> {
|
|
106
117
|
return await this.$serverCall('$getDescendants', [andSelf], true);
|
|
107
118
|
}
|
|
@@ -111,14 +122,14 @@ export default class Group extends Entity<GroupData> {
|
|
|
111
122
|
}
|
|
112
123
|
|
|
113
124
|
public async $isDescendant(
|
|
114
|
-
givenGroup: (Group & GroupData) | string
|
|
125
|
+
givenGroup: (Group & GroupData) | string,
|
|
115
126
|
): Promise<boolean> {
|
|
116
127
|
return await this.$serverCall('$isDescendant', [givenGroup], true);
|
|
117
128
|
}
|
|
118
129
|
|
|
119
130
|
public static async getPrimaryGroups(
|
|
120
131
|
options?: Options,
|
|
121
|
-
selectors?: Selector[]
|
|
132
|
+
selectors?: Selector[],
|
|
122
133
|
): Promise<(Group & GroupData)[]> {
|
|
123
134
|
return await this.serverCallStatic('getPrimaryGroups', [
|
|
124
135
|
{ options, class: this.class },
|
|
@@ -128,7 +139,7 @@ export default class Group extends Entity<GroupData> {
|
|
|
128
139
|
|
|
129
140
|
public static async getSecondaryGroups(
|
|
130
141
|
options?: Options,
|
|
131
|
-
selectors?: Selector[]
|
|
142
|
+
selectors?: Selector[],
|
|
132
143
|
): Promise<(Group & GroupData)[]> {
|
|
133
144
|
return await this.serverCallStatic('getSecondaryGroups', [
|
|
134
145
|
{ options, class: this.class },
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import Group, { GroupData } from './Group.js';
|
|
2
|
+
import User, { UserData } from './User.js';
|
|
3
|
+
|
|
4
|
+
export type AccessControlData = {
|
|
5
|
+
user?: User & UserData;
|
|
6
|
+
group?: Group & GroupData;
|
|
7
|
+
acUser?: number;
|
|
8
|
+
acGroup?: number;
|
|
9
|
+
acOther?: number;
|
|
10
|
+
acFull?: string[];
|
|
11
|
+
acWrite?: string[];
|
|
12
|
+
acRead?: string[];
|
|
13
|
+
};
|