@@ -7,13 +7,24 @@ export const Language = {
7
7
successProfileUpdate : "Updated preferences." ,
8
8
}
9
9
10
+ const permissionsToCheck : Record < string , TypesGen . UserPermissionCheck > = {
11
+ readAllUsers : {
12
+ object : {
13
+ resource_type : "user" ,
14
+ } ,
15
+ action : "read" ,
16
+ } ,
17
+ }
18
+
10
19
export interface AuthContext {
11
20
getUserError ?: Error | unknown
12
21
getMethodsError ?: Error | unknown
13
22
authError ?: Error | unknown
14
23
updateProfileError ?: Error | unknown
15
24
me ?: TypesGen . User
16
25
methods ?: TypesGen . AuthMethods
26
+ permissions ?: Types . UserPermissionCheckResponse
27
+ getPermissionsError ?: Error | unknown
17
28
}
18
29
19
30
export type AuthEvent =
@@ -50,6 +61,9 @@ export const authMachine =
50
61
updateProfile : {
51
62
data : TypesGen . User
52
63
}
64
+ getPermissions : {
65
+ data : Types . UserPermissionCheckResponse
66
+ }
53
67
} ,
54
68
} ,
55
69
id : "authState" ,
@@ -88,7 +102,7 @@ export const authMachine =
88
102
onDone : [
89
103
{
90
104
actions : [ "assignMe" , "clearGetUserError" ] ,
91
- target : "signedIn " ,
105
+ target : "gettingPermissions " ,
92
106
} ,
93
107
] ,
94
108
onError : [
@@ -100,6 +114,26 @@ export const authMachine =
100
114
} ,
101
115
tags : "loading" ,
102
116
} ,
117
+ gettingPermissions : {
118
+ entry : "clearGetPermissionsError" ,
119
+ invoke : {
120
+ src : "getPermissions" ,
121
+ id : "getPermissions" ,
122
+ onDone : [
123
+ {
124
+ actions : [ "assignPermissions" ] ,
125
+ target : "signedIn" ,
126
+ } ,
127
+ ] ,
128
+ onError : [
129
+ {
130
+ actions : "assignGetPermissionsError" ,
131
+ target : "signedOut" ,
132
+ } ,
133
+ ] ,
134
+ } ,
135
+ tags : "loading" ,
136
+ } ,
103
137
gettingMethods : {
104
138
invoke : {
105
139
src : "getMethods" ,
@@ -200,6 +234,15 @@ export const authMachine =
200
234
201
235
return API . updateProfile ( context . me . id , event . data )
202
236
} ,
237
+ getPermissions : async ( context ) => {
238
+ if ( ! context . me ) {
239
+ throw new Error ( "No current user found" )
240
+ }
241
+
242
+ return API . getUserPermissions ( context . me . id , {
243
+ checks : permissionsToCheck ,
244
+ } )
245
+ } ,
203
246
} ,
204
247
actions : {
205
248
assignMe : assign ( {
@@ -242,6 +285,15 @@ export const authMachine =
242
285
clearUpdateProfileError : assign ( {
243
286
updateProfileError : ( _ ) => undefined ,
244
287
} ) ,
288
+ assignPermissions : assign ( {
289
+ permissions : ( _ , event ) => event . data ,
290
+ } ) ,
291
+ assignGetPermissionsError : assign ( {
292
+ getPermissionsError : ( _ , event ) => event . data ,
293
+ } ) ,
294
+ clearGetPermissionsError : assign ( {
295
+ getPermissionsError : ( _ ) => undefined ,
296
+ } ) ,
245
297
} ,
246
298
} ,
247
299
)
0 commit comments