@@ -3,7 +3,7 @@ import { AccessTokenResponse, ApiKeyResponse } from "./jwt";
33import { newEnforcer , Model , StringAdapter } from "casbin" ;
44import { prisma } from "./prisma" ;
55import { ScopesUser , ScopesGroup , ScopesAdmin } from "../../config" ;
6- import { readFileSync } from "fs-extra " ;
6+ import { twtToId } from "./utils " ;
77import { join } from "path" ;
88
99/**
@@ -49,44 +49,70 @@ export const BaseScopesAdmin = {
4949const getPolicyForUser = async ( userId : number ) => {
5050 let policy = "" ;
5151 Object . values ( ScopesUser ) . forEach ( ( scope ) => {
52- policy += `p, user-${ userId } , user-${ userId } , ${ Acts . READ } ${ scope } \n` ;
53- policy += `p, user-${ userId } , user-${ userId } , ${ Acts . WRITE } ${ scope } \n` ;
52+ policy += `p, user-${ twtToId ( userId ) } , user-${ twtToId ( userId ) } , ${
53+ Acts . READ
54+ } ${ scope } \n`;
55+ policy += `p, user-${ twtToId ( userId ) } , user-${ twtToId ( userId ) } , ${
56+ Acts . WRITE
57+ } ${ scope } \n`;
5458 } ) ;
55- policy += `p, user-${ userId } , user-${ userId } , ${ Acts . DELETE } \n` ;
59+ policy += `p, user-${ twtToId ( userId ) } , user-${ twtToId ( userId ) } , ${
60+ Acts . DELETE
61+ } \n`;
5662 const memberships = await prisma . memberships . findMany ( {
5763 where : { userId } ,
5864 } ) ;
5965 for await ( const membership of memberships ) {
60- policy += `p, user-${ userId } , membership-${ membership . id } , ${ Acts . READ } \n` ;
61- policy += `p, user-${ userId } , membership-${ membership . id } , ${ Acts . WRITE } \n` ;
62- policy += `p, user-${ userId } , membership-${ membership . id } , ${ Acts . DELETE } \n` ;
66+ policy += `p, user-${ twtToId ( userId ) } , membership-${ twtToId (
67+ membership . id
68+ ) } , ${ Acts . READ } \n`;
69+ policy += `p, user-${ twtToId ( userId ) } , membership-${ twtToId (
70+ membership . id
71+ ) } , ${ Acts . WRITE } \n`;
72+ policy += `p, user-${ twtToId ( userId ) } , membership-${ twtToId (
73+ membership . id
74+ ) } , ${ Acts . DELETE } \n`;
6375 if ( membership . role === "ADMIN" || membership . role === "OWNER" ) {
6476 const groupMemberships = await prisma . memberships . findMany ( {
6577 where : { groupId : membership . groupId } ,
6678 } ) ;
67- policy += `p, user-${ userId } , group-${ membership . groupId } , ${ Acts . DELETE } \n` ;
79+ policy += `p, user-${ twtToId ( userId ) } , group-${ twtToId (
80+ membership . groupId
81+ ) } , ${ Acts . DELETE } \n`;
6882 groupMemberships . forEach ( ( groupMembership ) => {
69- policy += `p, user-${ userId } , membership-${ groupMembership . id } , ${ Acts . READ } \n` ;
83+ policy += `p, user-${ twtToId ( userId ) } , membership-${ twtToId (
84+ groupMembership . id
85+ ) } , ${ Acts . READ } \n`;
7086 if ( groupMembership . role !== "OWNER" ) {
71- policy += `p, user-${ userId } , membership-${ groupMembership . id } , ${ Acts . WRITE } \n` ;
72- policy += `p, user-${ userId } , membership-${ groupMembership . id } , ${ Acts . DELETE } \n` ;
87+ policy += `p, user-${ twtToId ( userId ) } , membership-${ twtToId (
88+ groupMembership . id
89+ ) } , ${ Acts . WRITE } \n`;
90+ policy += `p, user-${ twtToId ( userId ) } , membership-${ twtToId (
91+ groupMembership . id
92+ ) } , ${ Acts . DELETE } \n`;
7393 }
7494 } ) ;
7595 }
7696 Object . values ( ScopesGroup ) . forEach ( ( scope ) => {
7797 if ( membership . role === "ADMIN" || membership . role === "OWNER" ) {
78- policy += `p, user-${ userId } , group-${ membership . groupId } , ${ Acts . READ } ${ scope } \n` ;
79- policy += `p, user-${ userId } , group-${ membership . groupId } , ${ Acts . WRITE } ${ scope } \n` ;
98+ policy += `p, user-${ twtToId ( userId ) } , group-${ twtToId (
99+ membership . groupId
100+ ) } , ${ Acts . READ } ${ scope } \n`;
101+ policy += `p, user-${ twtToId ( userId ) } , group-${ twtToId (
102+ membership . groupId
103+ ) } , ${ Acts . WRITE } ${ scope } \n`;
80104 } else {
81- policy += `p, user-${ userId } , group-${ membership . groupId } , ${ Acts . READ } ${ scope } \n` ;
105+ policy += `p, user-${ twtToId ( userId ) } , group-${ twtToId (
106+ membership . groupId
107+ ) } , ${ Acts . READ } ${ scope } \n`;
82108 }
83109 } ) ;
84110 }
85111 const userDetails = await getUserById ( userId ) ;
86112 if ( userDetails . role === "SUDO" ) {
87113 Object . values ( ScopesAdmin ) . forEach ( ( scope ) => {
88- policy += `p, user-${ userId } , ${ Acts . READ } , ${ scope } \n` ;
89- policy += `p, user-${ userId } , ${ Acts . WRITE } , ${ scope } \n` ;
114+ policy += `p, user-${ twtToId ( userId ) } , ${ Acts . READ } , ${ scope } \n` ;
115+ policy += `p, user-${ twtToId ( userId ) } , ${ Acts . WRITE } , ${ scope } \n` ;
90116 } ) ;
91117 }
92118 console . log ( policy ) ;
0 commit comments