Skip to content

Commit 838b760

Browse files
authored
Merge pull request #2 from softnetics/yu/feat/is-valid-identity
[Feature] Add isValidIdentity method
2 parents 4bf0315 + 2e29f8f commit 838b760

2 files changed

Lines changed: 15 additions & 5 deletions

File tree

.changeset/cuddly-berries-ring.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@softnetics/rbac": minor
3+
---
4+
5+
Add isValidIdentity method for identity type-checking

src/index.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export interface Roles<TPermission extends Permissions> {
2727
export type IamPolicyType<
2828
TPermission extends Permissions,
2929
TName extends string,
30-
TRoleKey extends string,
30+
TRoleKey extends string
3131
> = {
3232
name: TName
3333
permissions: TPermission
@@ -50,7 +50,7 @@ export type AllPolicyType<TPolicies extends readonly IamPolicyType<Permissions,
5050
: never
5151

5252
export type AllPermissionType<
53-
TPolicies extends readonly IamPolicyType<Permissions, string, string>[],
53+
TPolicies extends readonly IamPolicyType<Permissions, string, string>[]
5454
> = TPolicies extends readonly [infer TPolicy, ...infer Rest]
5555
? TPolicy extends IamPolicyType<Permissions, infer N, string>
5656
? Rest extends IamPolicyType<Permissions, string, string>[]
@@ -70,7 +70,7 @@ export type AllPermissionType<
7070
export function createPolicy<
7171
const TPermission extends Permissions,
7272
TName extends string,
73-
TRoleKey extends string,
73+
TRoleKey extends string
7474
>({
7575
name,
7676
permissions,
@@ -93,7 +93,7 @@ export function createIdentity<
9393
TName extends string,
9494
TRoleKey extends string,
9595
const TPolicies extends readonly IamPolicyType<TPermissions, TName, TRoleKey>[],
96-
TRole extends string,
96+
TRole extends string
9797
>({
9898
identities,
9999
policies,
@@ -150,5 +150,10 @@ export function createIdentity<
150150
})
151151
}
152152

153-
return { identities: identityList, allPermissions, enforce }
153+
const isValidIdentity = (identity: unknown): identity is TRole => {
154+
if (typeof identity !== 'string') return false
155+
return identity in table
156+
}
157+
158+
return { identities: identityList, allPermissions, enforce, isValidIdentity }
154159
}

0 commit comments

Comments
 (0)