1+ import * as roleService from "../services/role.service.js" ;
2+
3+ export const createRole = async ( req , res ) => {
4+ try {
5+ const { name, permissions } = req . body ;
6+ const role = await roleService . createRole ( name , permissions ) ;
7+ res . status ( 201 ) . json ( role ) ;
8+ } catch ( err ) {
9+ res . status ( 400 ) . json ( { message : err . message } ) ;
10+ }
11+ } ;
12+
13+ export const getRoles = async ( req , res ) => {
14+ try {
15+ const roles = await roleService . getRoles ( ) ;
16+ res . json ( roles ) ;
17+ } catch ( err ) {
18+ res . status ( 500 ) . json ( { message : err . message } ) ;
19+ }
20+ } ;
21+
22+ export const getRoleById = async ( req , res ) => {
23+ try {
24+ const role = await roleService . getRoleById ( req . params . id ) ;
25+ if ( ! role ) return res . status ( 404 ) . json ( { message : "Role not found" } ) ;
26+ res . json ( role ) ;
27+ } catch ( err ) {
28+ res . status ( 500 ) . json ( { message : err . message } ) ;
29+ }
30+ } ;
31+
32+ export const updateRole = async ( req , res ) => {
33+ try {
34+ const role = await roleService . updateRole ( req . params . id , req . body ) ;
35+ if ( ! role ) return res . status ( 404 ) . json ( { message : "Role not found" } ) ;
36+ res . json ( role ) ;
37+ } catch ( err ) {
38+ res . status ( 400 ) . json ( { message : err . message } ) ;
39+ }
40+ } ;
41+
42+ export const deleteRole = async ( req , res ) => {
43+ try {
44+ const deleted = await roleService . deleteRole ( req . params . id ) ;
45+ if ( ! deleted ) return res . status ( 404 ) . json ( { message : "Role not found" } ) ;
46+ res . json ( { message : "Role deleted successfully" } ) ;
47+ } catch ( err ) {
48+ res . status ( 500 ) . json ( { message : err . message } ) ;
49+ }
50+ } ;
51+
52+ export const assignPermissions = async ( req , res ) => {
53+ try {
54+ const { permissions } = req . body ;
55+ if ( ! Array . isArray ( permissions ) ) {
56+ return res . status ( 400 ) . json ( { message : "permissions must be an array of permission IDs" } ) ;
57+ }
58+ const role = await roleService . assignPermissions ( req . params . id , permissions ) ;
59+ if ( ! role ) return res . status ( 404 ) . json ( { message : "Role not found" } ) ;
60+ // populate permissions before returning
61+ const populated = await roleService . getRoleById ( role . _id ) ;
62+ res . json ( populated ) ;
63+ } catch ( err ) {
64+ res . status ( 400 ) . json ( { message : err . message } ) ;
65+ }
66+ } ;
0 commit comments