Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 24 additions & 4 deletions auth-custom/io-manager-server/src/MyGroupsService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
GroupsService,
AuditBuilder,
GroupDataResult,
Group,
} from '@interopio/manager';

import { groups, users } from './data.js';
Expand All @@ -18,23 +19,42 @@ export class MyGroupsService implements GroupsService {
canRemoveUserFromGroup: true,
canGetAllGroups: true,
canGetUserGroups: true,
canGetGroup: true,
canUpdateGroup: true,
canAddOrUpdateGroup: true,
};
}

public async getGroup(name: string): Promise<Group | undefined> {
return groups.get(name);
}

public async updateGroup(group: Group, audit: AuditBuilder): Promise<Group> {
return groups.update(group);
}

public async addOrUpdateGroup(
group: Group,
audit: AuditBuilder
): Promise<Group> {
return groups.addOrUpdate(group);
}

public async getUserGroups(user: string | User): Promise<string[]> {
const localUser = this.findUser(user);
return localUser?.groups ?? [];
}

public async getAllGroups(request: DataRequest): Promise<GroupDataResult> {
const items = groups.getAll();
return {
items: groups.getAll().map((i: string) => ({ name: i })),
total: groups.getAll().length,
items,
total: items.length,
};
}

public async addGroup(name: string, audit: AuditBuilder): Promise<void> {
groups.add(name);
public async addGroup(group: Group, audit: AuditBuilder): Promise<Group> {
return groups.add(group);
}

public async removeGroup(name: string, audit: AuditBuilder): Promise<void> {
Expand Down
42 changes: 36 additions & 6 deletions auth-custom/io-manager-server/src/data.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,52 @@
import type { User } from '@interopio/manager';
import type { Group, User } from '@interopio/manager';

export const GROUP_SERVER_ADMIN = 'GLUE42_SERVER_ADMIN';
export const GROUP_FRONT_OFFICE = 'Front Office';

class InMemoryGroupsStore {
private groups = [GROUP_SERVER_ADMIN, GROUP_FRONT_OFFICE];
private groups: Group[] = [
{ name: GROUP_SERVER_ADMIN, expandedGroups: [] },
{ name: GROUP_FRONT_OFFICE, expandedGroups: [] },
];

public getAll() {
return this.groups;
}

public add(name: string) {
if (this.groups.indexOf(name) === -1) {
this.groups.push(name);
public get(name: string) {
return this.groups.find((g) => g.name === name);
}

public add(group: Group) {
if (!this.groups.find((g) => g.name === group.name)) {
this.groups.push(group);
}

return group;
}

public update(group: Group) {
const index = this.groups.findIndex((g) => g.name === group.name);
if (index > -1) {
this.groups.splice(index, 1, group);
}

return group;
}

public addOrUpdate(group: Group) {
const index = this.groups.findIndex((g) => g.name === group.name);
if (index > -1) {
this.groups.splice(index, 1, group);
} else {
this.groups.push(group);
}

return group;
}

public remove(name: string) {
const index = this.groups.indexOf(name);
const index = this.groups.findIndex((g) => g.name === name);
if (index > -1) {
this.groups.splice(index, 1);
}
Expand Down