Skip to content

Commit 1fcec97

Browse files
committed
fix: move AppsPermissions to apps-engine/definition
1 parent fc8e36d commit 1fcec97

3 files changed

Lines changed: 168 additions & 171 deletions

File tree

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
import type { INetworkingPermission, IPermission, IReadSettingPermission, IWorkspaceTokenPermission } from '../permissions/IPermission';
2+
3+
/**
4+
* @description
5+
*
6+
* App Permission naming rules:
7+
*
8+
* 'scope-name': {
9+
* 'permission-name': { name: 'scope-name.permission-name' }
10+
* }
11+
*
12+
* You can retrieve this permission by using:
13+
* AppPermissions['scope-name']['permission-name'] -> { name: 'scope-name.permission-name' }
14+
*
15+
* @example
16+
*
17+
* AppPermissions.upload.read // { name: 'upload.read', domains: [] }
18+
*/
19+
export const AppPermissions = {
20+
'user': {
21+
read: { name: 'user.read' },
22+
write: { name: 'user.write' },
23+
},
24+
'upload': {
25+
read: { name: 'upload.read' },
26+
write: { name: 'upload.write' },
27+
},
28+
'email': {
29+
send: { name: 'email.send' },
30+
},
31+
'ui': {
32+
interaction: { name: 'ui.interact' },
33+
registerButtons: { name: 'ui.registerButtons' },
34+
},
35+
'setting': {
36+
read: { name: 'server-setting.read', hiddenSettings: [] } as IReadSettingPermission,
37+
write: { name: 'server-setting.write' },
38+
},
39+
'room': {
40+
'read': { name: 'room.read' },
41+
'write': { name: 'room.write' },
42+
'system-view-all': { name: 'room.system.view-all' },
43+
},
44+
'role': {
45+
read: { name: 'role.read' },
46+
write: { name: 'role.write' },
47+
},
48+
'message': {
49+
read: { name: 'message.read' },
50+
write: { name: 'message.write' },
51+
},
52+
'moderation': {
53+
read: { name: 'moderation.read' },
54+
write: { name: 'moderation.write' },
55+
},
56+
'contact': {
57+
read: { name: 'contact.read' },
58+
write: { name: 'contact.write' },
59+
},
60+
'threads': {
61+
read: { name: 'threads.read' },
62+
},
63+
'livechat-status': {
64+
read: { name: 'livechat-status.read' },
65+
},
66+
'livechat-custom-fields': {
67+
write: { name: 'livechat-custom-fields.write' },
68+
},
69+
'livechat-visitor': {
70+
read: { name: 'livechat-visitor.read' },
71+
write: { name: 'livechat-visitor.write' },
72+
},
73+
'livechat-message': {
74+
read: { name: 'livechat-message.read' },
75+
write: { name: 'livechat-message.write' },
76+
multiple: { name: 'livechat-message.multiple' },
77+
},
78+
'livechat-room': {
79+
read: { name: 'livechat-room.read' },
80+
write: { name: 'livechat-room.write' },
81+
},
82+
'livechat-department': {
83+
read: { name: 'livechat-department.read' },
84+
write: { name: 'livechat-department.write' },
85+
multiple: { name: 'livechat-department.multiple' },
86+
},
87+
'env': {
88+
read: { name: 'env.read' },
89+
},
90+
'cloud': {
91+
'workspace-token': { name: 'cloud.workspace-token', scopes: [] } as IWorkspaceTokenPermission,
92+
},
93+
// Internal permissions
94+
'scheduler': {
95+
default: { name: 'scheduler' },
96+
},
97+
'networking': {
98+
default: { name: 'networking', domains: [] } as INetworkingPermission,
99+
},
100+
'persistence': {
101+
default: { name: 'persistence' },
102+
},
103+
'command': {
104+
default: { name: 'slashcommand' },
105+
},
106+
'videoConference': {
107+
read: { name: 'video-conference.read' },
108+
write: { name: 'video-conference.write' },
109+
provider: { name: 'video-conference-provider' },
110+
},
111+
'apis': {
112+
default: { name: 'api' },
113+
},
114+
'oauth-app': {
115+
read: { name: 'oauth-app.read' },
116+
write: { name: 'oauth-app.write' },
117+
},
118+
'outboundComms': {
119+
provide: { name: 'outbound-communication.provide' },
120+
},
121+
'experimental': {
122+
default: { name: 'experimental.default' },
123+
},
124+
'abac': {
125+
read: { name: 'abac.read' },
126+
},
127+
};
128+
129+
/**
130+
* @description
131+
* Default permissions for apps
132+
* Used to ensure backward compatibility with apps
133+
* that were developed before the permission system was introduced.
134+
*/
135+
export const defaultPermissions: Array<IPermission> = [
136+
AppPermissions.user.read,
137+
AppPermissions.user.write,
138+
AppPermissions.upload.read,
139+
AppPermissions.upload.write,
140+
AppPermissions.ui.interaction,
141+
AppPermissions.setting.read,
142+
AppPermissions.setting.write,
143+
AppPermissions.room.read,
144+
AppPermissions.room.write,
145+
AppPermissions.message.read,
146+
AppPermissions.message.write,
147+
AppPermissions['livechat-department'].read,
148+
AppPermissions['livechat-department'].write,
149+
AppPermissions['livechat-room'].read,
150+
AppPermissions['livechat-room'].write,
151+
AppPermissions['livechat-message'].read,
152+
AppPermissions['livechat-message'].write,
153+
AppPermissions['livechat-visitor'].read,
154+
AppPermissions['livechat-visitor'].write,
155+
AppPermissions['livechat-status'].read,
156+
AppPermissions['livechat-custom-fields'].write,
157+
AppPermissions.scheduler.default,
158+
AppPermissions.networking.default,
159+
AppPermissions.persistence.default,
160+
AppPermissions.env.read,
161+
AppPermissions.command.default,
162+
AppPermissions.videoConference.provider,
163+
AppPermissions.videoConference.read,
164+
AppPermissions.videoConference.write,
165+
AppPermissions.apis.default,
166+
];

packages/apps-engine/src/definition/metadata/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type { IAppInfo } from './IAppInfo';
44
import { RocketChatAssociationModel, RocketChatAssociationRecord } from './RocketChatAssociations';
55

66
export * from './AppInterface';
7+
export * from './AppPermissions';
78

89
export type { IAppAuthorInfo, IAppInfo };
910
export { AppMethod, RocketChatAssociationModel, RocketChatAssociationRecord };
Lines changed: 1 addition & 171 deletions
Original file line numberDiff line numberDiff line change
@@ -1,171 +1 @@
1-
import type {
2-
INetworkingPermission,
3-
IPermission,
4-
IReadSettingPermission,
5-
IWorkspaceTokenPermission,
6-
} from '@rocket.chat/apps-engine/definition/permissions/IPermission';
7-
8-
/**
9-
* @description
10-
*
11-
* App Permission naming rules:
12-
*
13-
* 'scope-name': {
14-
* 'permission-name': { name: 'scope-name.permission-name' }
15-
* }
16-
*
17-
* You can retrive this permission by using:
18-
* AppPermissions['scope-name']['permission-name'] -> { name: 'scope-name.permission-name' }
19-
*
20-
* @example
21-
*
22-
* AppPermissions.upload.read // { name: 'upload.read', domains: [] }
23-
*/
24-
export const AppPermissions = {
25-
'user': {
26-
read: { name: 'user.read' },
27-
write: { name: 'user.write' },
28-
},
29-
'upload': {
30-
read: { name: 'upload.read' },
31-
write: { name: 'upload.write' },
32-
},
33-
'email': {
34-
send: { name: 'email.send' },
35-
},
36-
'ui': {
37-
interaction: { name: 'ui.interact' },
38-
registerButtons: { name: 'ui.registerButtons' },
39-
},
40-
'setting': {
41-
read: { name: 'server-setting.read', hiddenSettings: [] } as IReadSettingPermission,
42-
write: { name: 'server-setting.write' },
43-
},
44-
'room': {
45-
'read': { name: 'room.read' },
46-
'write': { name: 'room.write' },
47-
'system-view-all': { name: 'room.system.view-all' },
48-
},
49-
'role': {
50-
read: { name: 'role.read' },
51-
write: { name: 'role.write' },
52-
},
53-
'message': {
54-
read: { name: 'message.read' },
55-
write: { name: 'message.write' },
56-
},
57-
'moderation': {
58-
read: { name: 'moderation.read' },
59-
write: { name: 'moderation.write' },
60-
},
61-
'contact': {
62-
read: { name: 'contact.read' },
63-
write: { name: 'contact.write' },
64-
},
65-
'threads': {
66-
read: { name: 'threads.read' },
67-
},
68-
'livechat-status': {
69-
read: { name: 'livechat-status.read' },
70-
},
71-
'livechat-custom-fields': {
72-
write: { name: 'livechat-custom-fields.write' },
73-
},
74-
'livechat-visitor': {
75-
read: { name: 'livechat-visitor.read' },
76-
write: { name: 'livechat-visitor.write' },
77-
},
78-
'livechat-message': {
79-
read: { name: 'livechat-message.read' },
80-
write: { name: 'livechat-message.write' },
81-
multiple: { name: 'livechat-message.multiple' },
82-
},
83-
'livechat-room': {
84-
read: { name: 'livechat-room.read' },
85-
write: { name: 'livechat-room.write' },
86-
},
87-
'livechat-department': {
88-
read: { name: 'livechat-department.read' },
89-
write: { name: 'livechat-department.write' },
90-
multiple: { name: 'livechat-department.multiple' },
91-
},
92-
'env': {
93-
read: { name: 'env.read' },
94-
},
95-
'cloud': {
96-
'workspace-token': { name: 'cloud.workspace-token', scopes: [] } as IWorkspaceTokenPermission,
97-
},
98-
// Internal permissions
99-
'scheduler': {
100-
default: { name: 'scheduler' },
101-
},
102-
'networking': {
103-
default: { name: 'networking', domains: [] } as INetworkingPermission,
104-
},
105-
'persistence': {
106-
default: { name: 'persistence' },
107-
},
108-
'command': {
109-
default: { name: 'slashcommand' },
110-
},
111-
'videoConference': {
112-
read: { name: 'video-conference.read' },
113-
write: { name: 'video-conference.write' },
114-
provider: { name: 'video-conference-provider' },
115-
},
116-
'apis': {
117-
default: { name: 'api' },
118-
},
119-
'oauth-app': {
120-
read: { name: 'oauth-app.read' },
121-
write: { name: 'oauth-app.write' },
122-
},
123-
'outboundComms': {
124-
provide: { name: 'outbound-communication.provide' },
125-
},
126-
'experimental': {
127-
default: { name: 'experimental.default' },
128-
},
129-
'abac': {
130-
read: { name: 'abac.read' },
131-
},
132-
};
133-
134-
/**
135-
* @description
136-
* Default permissions for apps
137-
* Used to ensure backward compatibility with apps
138-
* that were developed before the permission system was introduced.
139-
*/
140-
export const defaultPermissions: Array<IPermission> = [
141-
AppPermissions.user.read,
142-
AppPermissions.user.write,
143-
AppPermissions.upload.read,
144-
AppPermissions.upload.write,
145-
AppPermissions.ui.interaction,
146-
AppPermissions.setting.read,
147-
AppPermissions.setting.write,
148-
AppPermissions.room.read,
149-
AppPermissions.room.write,
150-
AppPermissions.message.read,
151-
AppPermissions.message.write,
152-
AppPermissions['livechat-department'].read,
153-
AppPermissions['livechat-department'].write,
154-
AppPermissions['livechat-room'].read,
155-
AppPermissions['livechat-room'].write,
156-
AppPermissions['livechat-message'].read,
157-
AppPermissions['livechat-message'].write,
158-
AppPermissions['livechat-visitor'].read,
159-
AppPermissions['livechat-visitor'].write,
160-
AppPermissions['livechat-status'].read,
161-
AppPermissions['livechat-custom-fields'].write,
162-
AppPermissions.scheduler.default,
163-
AppPermissions.networking.default,
164-
AppPermissions.persistence.default,
165-
AppPermissions.env.read,
166-
AppPermissions.command.default,
167-
AppPermissions.videoConference.provider,
168-
AppPermissions.videoConference.read,
169-
AppPermissions.videoConference.write,
170-
AppPermissions.apis.default,
171-
];
1+
export { AppPermissions, defaultPermissions } from '@rocket.chat/apps-engine/definition/metadata/AppPermissions';

0 commit comments

Comments
 (0)