fix(permission): ✨ change permission checking
read permissions from settings.json instead
This commit is contained in:
parent
8744ddcb8c
commit
cd0f67bb44
6 changed files with 128 additions and 60 deletions
|
|
@ -111,20 +111,28 @@ func (rr *RecipeRouter) Route(r chi.Router) {
|
|||
u := r.Context().Value("user").(*models.User)
|
||||
var result []string
|
||||
|
||||
if u.Permissions.IsHavePermission(permissions.ThaiPermission) {
|
||||
result = append(result, "tha")
|
||||
}
|
||||
// if u.Permissions.IsHavePermission(permissions.ThaiPermission) {
|
||||
// result = append(result, "tha")
|
||||
// }
|
||||
|
||||
if u.Permissions.IsHavePermission(permissions.MalayPermission) {
|
||||
result = append(result, "mys")
|
||||
}
|
||||
// if u.Permissions.IsHavePermission(permissions.MalayPermission) {
|
||||
// result = append(result, "mys")
|
||||
// }
|
||||
|
||||
if u.Permissions.IsHavePermission(permissions.AusPermission) {
|
||||
result = append(result, "aus")
|
||||
}
|
||||
// if u.Permissions.IsHavePermission(permissions.AusPermission) {
|
||||
// result = append(result, "aus")
|
||||
// }
|
||||
|
||||
if u.Permissions.IsHavePermission(permissions.Alpha3Permission) {
|
||||
result = append(result, "alpha")
|
||||
// if u.Permissions.IsHavePermission(permissions.Alpha3Permission) {
|
||||
// result = append(result, "alpha")
|
||||
// }
|
||||
|
||||
for _, v := range helpers.LoadCountrySettingsWithPermissions() {
|
||||
fmt.Println(u.Email, "can access ", v.CountryID, " ? ")
|
||||
if u.Permissions.IsHavePermission(permissions.Permission(v.CountryPermission)) {
|
||||
result = append(result, v.CountryID)
|
||||
fmt.Println("yes")
|
||||
}
|
||||
}
|
||||
|
||||
if err := json.NewEncoder(w).Encode(&contracts.Response[[]string]{
|
||||
|
|
|
|||
|
|
@ -3,15 +3,17 @@ package routers
|
|||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"github.com/go-chi/chi/v5"
|
||||
"go.uber.org/zap"
|
||||
"net/http"
|
||||
"recipe-manager/contracts"
|
||||
"recipe-manager/enums/permissions"
|
||||
"recipe-manager/helpers"
|
||||
"recipe-manager/middlewares"
|
||||
"recipe-manager/services/logger"
|
||||
"recipe-manager/services/user"
|
||||
"time"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type UserRouter struct {
|
||||
|
|
@ -25,16 +27,23 @@ func NewUserRouter(taoLogger *logger.TaoLogger, userService user.UserService) *U
|
|||
|
||||
func (ur *UserRouter) Route(r chi.Router) {
|
||||
|
||||
// Generate SuperAdmin permissions for seed
|
||||
perms := helpers.LoadCountrySettingsWithPermissions()
|
||||
superPerm := perms[0].CountryPermission
|
||||
for _, p := range perms {
|
||||
superPerm = superPerm | p.CountryPermission
|
||||
}
|
||||
|
||||
// Users
|
||||
r.Route("/users", func(r chi.Router) {
|
||||
r.Get("/", middlewares.ValidatePermissions([]permissions.Permission{permissions.SuperAdmin}, ur.getUsers))
|
||||
r.Get("/", middlewares.ValidatePermissions([]permissions.Permission{permissions.Permission(superPerm)}, ur.getUsers))
|
||||
|
||||
r.Post("/", middlewares.ValidatePermissions([]permissions.Permission{permissions.SuperAdmin}, ur.createUser))
|
||||
r.Post("/", middlewares.ValidatePermissions([]permissions.Permission{permissions.Permission(superPerm)}, ur.createUser))
|
||||
})
|
||||
|
||||
// User
|
||||
r.Route("/user", func(r chi.Router) {
|
||||
r.Get("/{id}", middlewares.ValidateOwnerOrPermissions([]permissions.Permission{permissions.SuperAdmin}, ur.getUser))
|
||||
r.Get("/{id}", middlewares.ValidateOwnerOrPermissions([]permissions.Permission{permissions.Permission(superPerm)}, ur.getUser))
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue