diff --git a/internal/domain/access/repository.go b/internal/domain/access/repository.go index ad9d22b..a8c1383 100644 --- a/internal/domain/access/repository.go +++ b/internal/domain/access/repository.go @@ -161,7 +161,7 @@ func (r accessRepo) GetAvailablePageByKeycloakId(c context.Context, keycloakId s user := &fetchUsers[0] var permissionIds []string - fetchUserPermission, err := r.getUserPermissionByUserId(c, dbconn, user.ID) + fetchUserPermission, err := r.getUserActivePermissionByUserId(c, dbconn, user.ID) if err != nil { return nil, err } @@ -670,20 +670,36 @@ func (r accessRepo) getOrCreateUserPermission(c context.Context, db *sqlx.DB, tx return nil } -func (r accessRepo) getUserPermissionByUserId(c context.Context, db *sqlx.DB, userId string) ([]RoleUserPermissionModel, error) { +func (r accessRepo) getUserActivePermissionByUserId(c context.Context, db *sqlx.DB, userId string) ([]RoleUserPermissionModel, error) { var result []RoleUserPermissionModel query := queryUtils.DynamicQuery{ - From: TBL_USER_PERMISSION, + From: TBL_USER_PERMISSION, + Aliases: "up", Fields: []queryUtils.SelectField{ - {Expression: "id"}, + {Expression: "up.id"}, {Expression: "id_user"}, {Expression: "id_permission"}, }, + Joins: []queryUtils.Join{ + { + Type: "LEFT", + Table: TBL_PERMISSION, + Alias: "p", + OnConditions: queryUtils.FilterGroup{ + Filters: []queryUtils.DynamicFilter{ + { + Column: "p.id", Operator: queryUtils.OpEqual, Value: "up.id_permission", + }, + }, + }, + }, + }, Filters: []queryUtils.FilterGroup{ { Filters: []queryUtils.DynamicFilter{ {Column: "id_user", Operator: queryUtils.OpEqual, Value: userId}, + {Column: "p.is_active", Operator: queryUtils.OpEqual, Value: true}, }, LogicOp: "AND", }, },