endpoint list role permission

This commit is contained in:
renaldybrada
2026-02-25 11:28:34 +07:00
parent 3fe7000d53
commit 1bcc642c49
8 changed files with 99 additions and 3 deletions
+1 -1
View File
@@ -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
View File
@@ -45,7 +45,7 @@
"tags": [
"Access Role"
],
"summary": "Get List User And Role",
"summary": "Get List Role Page Settings",
"parameters": [
{
"type": "string",
+1 -1
View File
@@ -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:
+28
View File
@@ -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) {
+55
View File
@@ -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
+6
View File
@@ -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"`
}
+5
View File
@@ -56,3 +56,8 @@ type ListUserRolePaginateResponse struct {
Data []UserRoleResponse
Paging shared.PaginationInfo
}
type ListRolePermissionPaginateResponse struct {
Data []RolePermissionModel
Paging shared.PaginationInfo
}
+2
View File
@@ -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)
}