Skip to content
This repository was archived by the owner on Feb 14, 2024. It is now read-only.

Casljs Logic #8

Draft
wants to merge 37 commits into
base: main
Choose a base branch
from
Draft
Changes from 1 commit
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
9086ea9
fix: pnpm
uzunertoprak Jul 25, 2022
a6b1941
Update pnpm-lock.yaml
productdevbook Jul 25, 2022
f7a869b
Merge branch 'productdevbook:main' into main
uzunertoprak Jul 25, 2022
1fce841
casl: rbac logic added
uzunertoprak Jul 26, 2022
8d34ffd
Update README.md
uzunertoprak Jul 26, 2022
84b47f4
feat: entity
productdevbook Jul 27, 2022
359c99d
Update action.entity.ts
productdevbook Jul 27, 2022
e14b89e
update: docker compose
uzunertoprak Jul 27, 2022
15bd2e8
minor fixes
uzunertoprak Jul 27, 2022
7108eac
fix: auth repo
uzunertoprak Jul 27, 2022
1ca5340
repositories
uzunertoprak Jul 27, 2022
58d3748
fix: general
productdevbook Jul 27, 2022
60980a7
update: casl module
uzunertoprak Jul 27, 2022
2c21d2f
feat: role add resolvers
productdevbook Jul 28, 2022
f133f1e
fix: postgres extension
uzunertoprak Jul 28, 2022
d14b5e6
update: casl
uzunertoprak Jul 28, 2022
d686686
core: cals v6
productdevbook Jul 29, 2022
9e5da63
fix: migration
productdevbook Jul 29, 2022
2281333
fix: seeders
productdevbook Jul 29, 2022
f782173
fix: typo
productdevbook Jul 29, 2022
f14bf32
update: repo
uzunertoprak Jul 29, 2022
438b641
fix: owner switched
uzunertoprak Jul 29, 2022
65bac2b
Merge branch 'productdevbook:main' into main
uzunertoprak Jul 29, 2022
af19d17
updated: repositories
uzunertoprak Jul 30, 2022
e0d2ded
Merge branch 'main' of https://github.com/uzunertoprak/full-stack-mon…
uzunertoprak Jul 30, 2022
c27d573
Merge branch 'productdevbook:main' into main
uzunertoprak Jul 31, 2022
71610db
fix: repositories
uzunertoprak Jul 31, 2022
b48873a
updated: README.MD
uzunertoprak Jul 31, 2022
e7caad9
Merge branch 'main' into pr/8
productdevbook Aug 6, 2022
04a5445
fix: migration
productdevbook Aug 6, 2022
aa62e3e
fix: roles
productdevbook Aug 6, 2022
52ff68f
fix
uzunertoprak Aug 6, 2022
ce280c5
Merge branch 'main' of https://github.com/uzunertoprak/full-stack-mon…
uzunertoprak Aug 6, 2022
b2c74eb
fix: jwtArgs type
uzunertoprak Aug 6, 2022
005a2d6
fix: permission guard
uzunertoprak Aug 6, 2022
7d815ce
removed: unused imports
uzunertoprak Aug 6, 2022
0af60ef
fix: lint
productdevbook Aug 6, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix: typo
productdevbook committed Jul 29, 2022
commit f782173cfd85a2ae9a3ca98d6bbe57235ce8d40f
4 changes: 3 additions & 1 deletion apps/nestjs/schema.graphql
Original file line number Diff line number Diff line change
@@ -64,6 +64,7 @@ input CreateNotificationTokenInput {

input CreatePermissionInput {
action: ActionEnum!
subjectId: ID!
}

input CreateSubjectInput {
@@ -129,7 +130,7 @@ type Mutation {
addPermissionToRole(permissionId: String!, rolename: String!): Role!
addRoleToUser(rolename: String!, username: String!): Role!
createAdminRole(data: CreateAdminRoleInput!): Role!
createPermission(data: CreatePermissionInput!, subject_id: String!): Permission!
createPermission(data: CreatePermissionInput!): Permission!
createSubject(data: CreateSubjectInput!): Subject!
deletePermission(id: String!): Permission!
deleteRole(id: String!): Role!
@@ -377,6 +378,7 @@ type TokenResponse {

input UpdatePermissionInput {
action: ActionEnum
subjectId: ID
}

input UpdateRoleInput {
6 changes: 1 addition & 5 deletions apps/nestjs/src/entities/permission.entity.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Collection, Entity, Enum, ManyToMany, ManyToOne } from '@mikro-orm/core'
import { Field, ObjectType, registerEnumType } from '@nestjs/graphql'
import { Field, ObjectType } from '@nestjs/graphql'
import { BaseModel } from './base.model'
import { Role } from './role.entity'
import { Subject } from './subject.entity'
@@ -23,7 +23,3 @@ export class Permission extends BaseModel {
@Field(() => [ActionEnum], { nullable: true })
action!: ActionEnum
}

registerEnumType(ActionEnum, {
name: 'ActionEnum',
})
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { Field, InputType, registerEnumType } from '@nestjs/graphql'
import { Field, ID, InputType } from '@nestjs/graphql'
import { ActionEnum } from '../../interfaces/action.enum'

@InputType()
export class CreatePermissionInput {
@Field(() => ActionEnum)
action!: ActionEnum

@Field(() => ID)
subjectId!: string
}

registerEnumType(ActionEnum, {
name: 'ActionEnum',
})
6 changes: 6 additions & 0 deletions apps/nestjs/src/modules/casl/interfaces/action.enum.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import { registerEnumType } from '@nestjs/graphql'

export enum ActionEnum {
MANAGE = 'manage',
CREATE = 'create',
READ = 'read',
UPDATE = 'update',
DELETE = 'delete',
}

registerEnumType(ActionEnum, {
name: 'ActionEnum',
})
5 changes: 2 additions & 3 deletions apps/nestjs/src/modules/casl/repositories/permission.repo.ts
Original file line number Diff line number Diff line change
@@ -14,9 +14,8 @@ export class PermissionRepository {
private readonly subjectRepo: SubjectRepository,
) { }

async createPermission(subject_id: string, createPermissionInput: CreatePermissionInput): Promise<Permission> {
const subject = await this.subjectRepo.getSubjectById(subject_id)
const newPermission = this.permissionRepo.create({ ...createPermissionInput, subject })
async createPermission(data: CreatePermissionInput): Promise<Permission> {
const newPermission = this.permissionRepo.create({ subject: data.subjectId, action: data.action })
await this.permissionRepo.persistAndFlush(newPermission)
return newPermission
}
4 changes: 2 additions & 2 deletions apps/nestjs/src/modules/casl/resolvers/permission.resolver.ts
Original file line number Diff line number Diff line change
@@ -14,8 +14,8 @@ export class CalsPermissionResolver {
}

@Mutation(() => Permission)
async createPermission(@Args('subject_id') subject_id: string, @Args('data') data: CreatePermissionInput): Promise<Permission> {
return await this.permissionService.createPermission(subject_id, data)
async createPermission(@Args('data') data: CreatePermissionInput): Promise<Permission> {
return await this.permissionService.createPermission(data)
}

@Mutation(() => Permission)
4 changes: 2 additions & 2 deletions apps/nestjs/src/modules/casl/services/permission.service.ts
Original file line number Diff line number Diff line change
@@ -8,8 +8,8 @@ import { Permission } from '@/entities'
export class PermissionService {
constructor(private readonly permissionRepository: PermissionRepository) {}

async createPermission(subject_id: string, createPermissionInput: CreatePermissionInput): Promise<Permission> {
return await this.permissionRepository.createPermission(subject_id, createPermissionInput)
async createPermission(data: CreatePermissionInput): Promise<Permission> {
return await this.permissionRepository.createPermission(data)
}

async getAllPermissions(): Promise<Permission[]> {