Skip to content

Commit 58ea6ab

Browse files
author
Frantz Kati
committed
fix(auth): fix permissions checks for auth package
1 parent 0a56b33 commit 58ea6ab

File tree

3 files changed

+26
-17
lines changed

3 files changed

+26
-17
lines changed

examples/blog/app.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ module.exports = tensei()
8181
.databaseConfig({
8282
type: process.env.DATABASE_TYPE || 'mysql',
8383
dbName: process.env.DATABASE_NAME || 'mikrotensei',
84-
debug: process.env.DEBUG || false,
84+
debug: process.env.DEBUG || true,
8585
user: process.env.DATABASE_USER || 'mikrotensei',
8686
password: process.env.DATABASE_PASSWORD || '',
8787
})

packages/auth/src/index.ts

+20-16
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ class Auth {
591591
].includes(path)
592592
) {
593593
return query.authorize(({ user }) =>
594-
user.permissions!.includes(`insert:${slug}`)
594+
user?.permissions?.includes(`insert:${slug}`)
595595
)
596596
}
597597

@@ -602,7 +602,7 @@ class Auth {
602602
].includes(path)
603603
) {
604604
return query.authorize(({ user }) =>
605-
user.permissions!.includes(`delete:${slug}`)
605+
user?.permissions?.includes(`delete:${slug}`)
606606
)
607607
}
608608

@@ -613,19 +613,19 @@ class Auth {
613613
].includes(path)
614614
) {
615615
return query.authorize(({ user }) =>
616-
user.permissions!.includes(`update:${slug}`)
616+
user?.permissions?.includes(`update:${slug}`)
617617
)
618618
}
619619

620620
if (path === plural) {
621621
return query.authorize(({ user }) =>
622-
user.permissions!.includes(`fetch:${slug}`)
622+
user?.permissions?.includes(`fetch:${slug}`)
623623
)
624624
}
625625

626626
if (path === singular) {
627627
return query.authorize(({ user }) =>
628-
user.permissions!.includes(`show:${slug}`)
628+
user?.permissions?.includes(`show:${slug}`)
629629
)
630630
}
631631
}
@@ -702,7 +702,7 @@ class Auth {
702702
internal
703703
) {
704704
return route.authorize(({ user }) =>
705-
user.permissions!.includes(
705+
user?.permissions?.includes(
706706
`insert:${slugSingular}`
707707
)
708708
)
@@ -714,7 +714,7 @@ class Auth {
714714
internal
715715
) {
716716
return route.authorize(({ user }) =>
717-
user.permissions!.includes(
717+
user?.permissions?.includes(
718718
`fetch:${slugSingular}`
719719
)
720720
)
@@ -726,7 +726,7 @@ class Auth {
726726
internal
727727
) {
728728
return route.authorize(({ user }) =>
729-
user.permissions!.includes(
729+
user?.permissions?.includes(
730730
`show:${slugSingular}`
731731
)
732732
)
@@ -741,7 +741,7 @@ class Auth {
741741
internal
742742
) {
743743
return route.authorize(({ user }) =>
744-
user.permissions!.includes(
744+
user?.permissions?.includes(
745745
`update:${slugSingular}`
746746
)
747747
)
@@ -756,7 +756,7 @@ class Auth {
756756
internal
757757
) {
758758
return route.authorize(({ user }) =>
759-
user.permissions!.includes(
759+
user?.permissions!.includes(
760760
`delete:${slugSingular}`
761761
)
762762
)
@@ -1689,21 +1689,18 @@ class Auth {
16891689
slug: 'public'
16901690
},
16911691
{
1692-
populate: [this.resources.permission.data.snakeCaseNamePlural],
1692+
populate: ['permissions'],
16931693
refresh: true
16941694
}
16951695
)
16961696

16971697
if (!user) {
16981698
ctx.user = {
16991699
public: true,
1700-
[this.resources.role.data.snakeCaseNamePlural]: [
1700+
roles: [
17011701
publicRole as UserRole
17021702
],
1703-
[this.resources.permission.data
1704-
.snakeCaseNamePlural]: publicRole[
1705-
this.resources.permission.data.snakeCaseNamePlural
1706-
]
1703+
permissions: publicRole.permissions
17071704
.toJSON()
17081705
.map((permission: any) => permission.slug)
17091706
} as any
@@ -1761,6 +1758,13 @@ class Auth {
17611758
}
17621759
)
17631760

1761+
if (this.config.rolesAndPermissions) {
1762+
user.permissions = user.roles.reduce((acc: string[], role: UserRole) => [
1763+
...acc,
1764+
...role.permissions.map(p => p.slug)
1765+
], [])
1766+
}
1767+
17641768
ctx.user = user
17651769
} catch (error) {}
17661770
}

packages/common/typings/config.d.ts

+5
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,11 @@ declare module '@tensei/common/config' {
160160
id: number
161161
name: string
162162
slug: string
163+
permissions: ({
164+
id: number
165+
name: string
166+
slug: string
167+
})[]
163168
}
164169
interface User {
165170
id: number

0 commit comments

Comments
 (0)