Initial commit
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/sujit-baniya/fiber-boilerplate/app"
|
||||
"github.com/sujit-baniya/fiber-boilerplate/pkg/models"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func CreateNewRole(c *fiber.Ctx) error {
|
||||
var role models.Role
|
||||
c.BodyParser(&role)
|
||||
app.Http.Database.Create(&role)
|
||||
return c.JSON(role)
|
||||
}
|
||||
func RemoveRole(c *fiber.Ctx) error {
|
||||
var role models.Role
|
||||
c.BodyParser(&role)
|
||||
|
||||
app.Http.Database.
|
||||
Delete(&models.RoleAndPermission{})
|
||||
app.Http.Auth.Enforcer.LoadPolicy()
|
||||
return nil
|
||||
}
|
||||
|
||||
func AssignRoleToUser(c *fiber.Ctx) error {
|
||||
var roleRequest models.RoleRequest
|
||||
var role1 models.RoleAndPermission
|
||||
c.BodyParser(&roleRequest)
|
||||
role := models.RoleAndPermission{
|
||||
Ptype: "g",
|
||||
V0: fmt.Sprintf("%d", roleRequest.UserID),
|
||||
V1: roleRequest.Role,
|
||||
}
|
||||
err := app.Http.Database.Unscoped().First(&role1, models.RoleAndPermission{Ptype: role.Ptype,V0: role.V0, V1: role.V1}).Error
|
||||
if err != nil {
|
||||
app.Http.Database.Create(&role)
|
||||
app.Http.Auth.Enforcer.LoadPolicy()
|
||||
return c.JSON(role)
|
||||
}
|
||||
role1.DeletedAt = gorm.DeletedAt{Valid: false}
|
||||
app.Http.Database.Unscoped().Save(role1)
|
||||
app.Http.Auth.Enforcer.LoadPolicy()
|
||||
return c.JSON(role1)
|
||||
}
|
||||
|
||||
func RevokeRoleFromUser(c *fiber.Ctx) error {
|
||||
var roleRequest models.RoleRequest
|
||||
c.BodyParser(&roleRequest)
|
||||
app.Http.Database.
|
||||
Delete(
|
||||
&models.RoleAndPermission{},
|
||||
models.RoleAndPermission{V0: fmt.Sprintf("%d", roleRequest.UserID), V1: roleRequest.Role})
|
||||
app.Http.Auth.Enforcer.LoadPolicy()
|
||||
return c.JSON("Role Revoked from user")
|
||||
}
|
||||
|
||||
func ChangeRoleForUser(c *fiber.Ctx) error {
|
||||
var role models.RoleRequest
|
||||
var role1 models.RoleAndPermission
|
||||
c.BodyParser(&role)
|
||||
err := app.Http.Database.Unscoped().First(&role1, models.RoleAndPermission{Ptype: "g",V0: fmt.Sprintf("%d", role.UserID), V1: role.OldRole}).Error
|
||||
if err == nil {
|
||||
role1.V1 = role.Role
|
||||
role1.DeletedAt = gorm.DeletedAt{Valid: false}
|
||||
app.Http.Database.Unscoped().Save(role1)
|
||||
app.Http.Auth.Enforcer.LoadPolicy()
|
||||
return c.JSON("Role Changed for user")
|
||||
}
|
||||
return c.JSON("Role doesn't exists")
|
||||
}
|
||||
|
||||
func AddPermissionOnRole(c *fiber.Ctx) error {
|
||||
var permission models.PermissionRequest
|
||||
var role1 models.RoleAndPermission
|
||||
c.BodyParser(&permission)
|
||||
if permission.Role != "" && permission.Module != "" && permission.Action != "" {
|
||||
role := models.RoleAndPermission{
|
||||
Ptype: "p",
|
||||
V0: permission.Role,
|
||||
V1: permission.Module,
|
||||
V2: permission.Action,
|
||||
Category: "permission",
|
||||
}
|
||||
err := app.Http.Database.Unscoped().First(&role1, models.RoleAndPermission{Ptype: role.Ptype,V0: role.V0, V1: role.V1, V2: role.V2}).Error
|
||||
if err != nil {
|
||||
app.Http.Database.Create(&role)
|
||||
}
|
||||
role1.DeletedAt = gorm.DeletedAt{Valid: false}
|
||||
app.Http.Database.Unscoped().Save(role1)
|
||||
}
|
||||
if permission.Role != "" && permission.Route != "" && permission.Method != "" {
|
||||
fmt.Println(1)
|
||||
role := models.RoleAndPermission{
|
||||
Ptype: "p",
|
||||
V0: permission.Role,
|
||||
V1: permission.Route,
|
||||
V2: permission.Method,
|
||||
Category: "route",
|
||||
}
|
||||
err := app.Http.Database.Unscoped().First(&role1, models.RoleAndPermission{Ptype: role.Ptype,V0: role.V0, V1: role.V1, V2: role.V2}).Error
|
||||
if err != nil {
|
||||
app.Http.Database.Create(&role)
|
||||
}
|
||||
role1.DeletedAt = gorm.DeletedAt{Valid: false}
|
||||
app.Http.Database.Unscoped().Save(role1)
|
||||
}
|
||||
app.Http.Auth.Enforcer.LoadPolicy()
|
||||
return nil
|
||||
}
|
||||
func RemovePermissionFromRole(c *fiber.Ctx) error {
|
||||
return nil
|
||||
}
|
||||
func ChangePermissionOnRole(c *fiber.Ctx) error {
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user