forked from openiap/opencore
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRole.ts
More file actions
55 lines (54 loc) · 1.94 KB
/
Copy pathRole.ts
File metadata and controls
55 lines (54 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import { Base } from "./base";
import { DatabaseConnection } from "./DatabaseConnection";
import { TokenUser } from "./TokenUser";
import { Config } from "./Config";
export class Rolemember {
constructor(name: string, _id: string) {
this.name = name;
this._id = _id;
}
name: string;
_id: string;
}
export class Role extends Base {
constructor() {
super();
this._type = "role";
}
static assign<T>(o: T): T {
var newo: Role = new Role();
return Object.assign(newo, o);
}
members: Rolemember[] = [];
IsMember(_id: string): boolean {
var hits: Rolemember[] = this.members.filter(member => member._id === _id);
return (hits.length === 1);
}
AddMember(item: Base): void {
if (!this.IsMember(item._id)) {
this.members.push(new Rolemember(item.name, item._id));
}
}
RemoveMember(_id: string): void {
this.members.forEach((member, idx) => {
if (member._id === _id) {
this.members.splice(idx, 1);
}
});
}
public static async FindByName(name: string): Promise<Role> {
var items: Role[] = await Config.db.query<Role>({ name: name }, null, 1, 0, null, "users", TokenUser.rootToken());
if (items === null || items === undefined || items.length === 0) { return null; }
var result: Role = Role.assign(items[0]);
return result;
}
public static async FindByNameOrId(name: string, id: string): Promise<Role> {
var items: Role[] = await Config.db.query<Role>({ $or: [{ name: name }, { _id: id }] }, null, 1, 0, null, "users", TokenUser.rootToken());
if (items === null || items === undefined || items.length === 0) { return null; }
var result: Role = Role.assign(items[0]);
return result;
}
public async Save(jwt: string): Promise<void> {
await Config.db._UpdateOne(null, this, "users", 0, false, jwt);
}
}