endpoint list role permission
This commit is contained in:
+1
-1
@@ -51,7 +51,7 @@ const docTemplate = `{
|
||||
"tags": [
|
||||
"Access Role"
|
||||
],
|
||||
"summary": "Get List User And Role",
|
||||
"summary": "Get List Role Page Settings",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "string",
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@
|
||||
"tags": [
|
||||
"Access Role"
|
||||
],
|
||||
"summary": "Get List User And Role",
|
||||
"summary": "Get List Role Page Settings",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "string",
|
||||
|
||||
+1
-1
@@ -510,7 +510,7 @@ paths:
|
||||
description: Internal Server Error
|
||||
schema:
|
||||
$ref: '#/definitions/shared.BaseErrorResponse'
|
||||
summary: Get List User And Role
|
||||
summary: Get List Role Page Settings
|
||||
tags:
|
||||
- Access Role
|
||||
/access/sync-keycloak-role:
|
||||
|
||||
@@ -137,8 +137,36 @@ func (h AccessHandler) ListUserRole(c *gin.Context) {
|
||||
))
|
||||
}
|
||||
|
||||
// ListRolePageSettings godoc
|
||||
// @Summary Get List Role Page Settings
|
||||
// @Tags Access Role
|
||||
// @Param search query string false "Search Keyword"
|
||||
// @Param limit query string false "Limit" default(10)
|
||||
// @Param offset query string false "Offset" default(0)
|
||||
// @Success 200 {object} []UserRoleResponse
|
||||
// @Failure 500 {object} shared.BaseErrorResponse
|
||||
// @Router /access/list-user [get]
|
||||
func (h AccessHandler) ListRolePageSettings(c *gin.Context) {
|
||||
var query QueryListRolePermission
|
||||
if err := c.ShouldBindQuery(&query); err != nil {
|
||||
c.JSON(400, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
res, err := h.repo.ListRolePermission(c.Request.Context(), query)
|
||||
if err != nil {
|
||||
c.JSON(500, shared.BaseErrorResponse{
|
||||
Success: false,
|
||||
Code: 500,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(200,
|
||||
shared.ToBaseResponsePaginate(
|
||||
res.Data, res.Paging, true, 200, "success get list role permission",
|
||||
))
|
||||
}
|
||||
|
||||
func (h AccessHandler) DetailRolePageSettings(c *gin.Context) {
|
||||
|
||||
@@ -25,6 +25,7 @@ type IAccessRepository interface {
|
||||
UpdateUserPermission(c context.Context, userId string, req SyncKeycloakRoleRequest) error
|
||||
GetAvailablePageByKeycloakId(c context.Context, keycloakId string) ([]RolePageModel, error)
|
||||
ListUserRole(c context.Context, q QueryListUserRole) (ListUserRolePaginateResponse, error)
|
||||
ListRolePermission(c context.Context, q QueryListRolePermission) (ListRolePermissionPaginateResponse, error)
|
||||
}
|
||||
|
||||
type accessRepo struct {
|
||||
@@ -258,6 +259,60 @@ func (r accessRepo) ListUserRole(c context.Context, q QueryListUserRole) (ListUs
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (r accessRepo) ListRolePermission(c context.Context, q QueryListRolePermission) (ListRolePermissionPaginateResponse, error) {
|
||||
var result ListRolePermissionPaginateResponse
|
||||
|
||||
query := queryUtils.DynamicQuery{
|
||||
From: TBL_PERMISSION,
|
||||
Fields: []queryUtils.SelectField{
|
||||
{Expression: "id"},
|
||||
{Expression: "name"},
|
||||
{Expression: "is_active"},
|
||||
},
|
||||
Sort: []queryUtils.SortField{
|
||||
{Column: "created_at", Order: "DESC"},
|
||||
},
|
||||
}
|
||||
|
||||
if q.Search != "" {
|
||||
searchFilters := []queryUtils.DynamicFilter{
|
||||
{Column: "name", Operator: queryUtils.OpILike, Value: "%" + q.Search + "%"},
|
||||
}
|
||||
|
||||
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: searchFilters, LogicOp: "OR"})
|
||||
}
|
||||
|
||||
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
log.Printf("Unable to connect db : %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
// query count
|
||||
countData, err := r.queryBuilder.ExecuteCount(c, dbconn, query)
|
||||
if err != nil {
|
||||
log.Printf("Unable to execute query count : %s ", err)
|
||||
return result, err
|
||||
}
|
||||
result.Paging.Limit = q.Limit
|
||||
result.Paging.Offset = q.Offset
|
||||
result.Paging.Total = int(countData)
|
||||
result.Paging.CalculatePagingInfo()
|
||||
|
||||
// query data
|
||||
queryData := query
|
||||
queryData.Limit = q.Limit
|
||||
queryData.Offset = q.Offset
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, queryData, &result.Data)
|
||||
if err != nil {
|
||||
log.Printf("Unable to execute query data : %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// PRIVATE FUNCTIONS
|
||||
|
||||
// Table user function
|
||||
|
||||
@@ -18,3 +18,9 @@ type QueryListUserRole struct {
|
||||
Limit int `form:"limit,default=10"`
|
||||
Offset int `form:"offset,default=0"`
|
||||
}
|
||||
|
||||
type QueryListRolePermission struct {
|
||||
Search string `form:"search"`
|
||||
Limit int `form:"limit,default=10"`
|
||||
Offset int `form:"offset,default=0"`
|
||||
}
|
||||
|
||||
@@ -56,3 +56,8 @@ type ListUserRolePaginateResponse struct {
|
||||
Data []UserRoleResponse
|
||||
Paging shared.PaginationInfo
|
||||
}
|
||||
|
||||
type ListRolePermissionPaginateResponse struct {
|
||||
Data []RolePermissionModel
|
||||
Paging shared.PaginationInfo
|
||||
}
|
||||
|
||||
@@ -13,4 +13,6 @@ func RegisterRoutes(r *gin.RouterGroup, dbService database.Service) {
|
||||
r.POST("/sync-keycloak-role", accessHandler.SyncKeycloakRole)
|
||||
r.GET("/eligible-menu", accessHandler.GetPageByKeycloakId)
|
||||
r.GET("/list-user", accessHandler.ListUserRole)
|
||||
|
||||
r.GET("/role-permission", accessHandler.ListRolePageSettings)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user