Size: a a a

2020 February 16

АП

Александр Попов in Go-go!
и конечно роли оформить константами, что бы без ошибочек + подсветка IDE
источник

I

Igor in Go-go!
Александр Попов
и конечно роли оформить константами, что бы без ошибочек + подсветка IDE
роли у меня в ямлике вне программы задаются
источник

АП

Александр Попов in Go-go!
func AppleHandler(...) {
      user := GetUser(r)
      roles, err := auth.GetRoles("ReadApples", "MakeAppleGreatAgain")
      if err != nil {
             // 500 error, роли не найдены в бд
             return
      }
      if !auth.RoleCheck(user, roles...) {
            // error
            return
      }
      // Logic
}
источник

I

Igor in Go-go!
Ну я пока так сделал:
func DeleteGroup(groupId, ownerId int) (int, error) {
   _, fname := utils.FuncName()
   log.Debug("function: " + fname)
   if !utils.CheckPermissions(groupId, ownerId, fname, callPermissions[fname]) {
       return http.StatusForbidden, errors.New("Access not allowed")
   }
   // Logic
}
источник

I

Igor in Go-go!
потом останется fname руками поменять на реальные имена функций
источник

I

Igor in Go-go!
ну и никакого оверхеда не будет
источник

АП

Александр Попов in Go-go!
а callPermissions это что?
источник

I

Igor in Go-go!
словарик с пермишенами
источник

I

Igor in Go-go!
callPermissions = map[string]string{
       "DeleteGroup":           "delete",
       "GetGroup":              "read",
       "Update":                "update",
...
}
источник

АП

Александр Попов in Go-go!
вот зачем ты хреначишь словарь в одном месте, когда роли можно запросить сразу из функции
источник

АП

Александр Попов in Go-go!
func DeleteGroup(groupId, ownerId int) (int, error) {
   if !utils.CheckPermissions(groupId, ownerId, "delete") {
       return http.StatusForbidden, errors.New("Access not allowed")
   }
   // Logic
}
источник

C

Constantine in Go-go!
Александр Попов
вот зачем ты хреначишь словарь в одном месте, когда роли можно запросить сразу из функции
а как тесты писать?
источник

I

Igor in Go-go!
изначально так и было. Словарь завел для единообразия, ну и чтоб внимание не рассеивалось
источник

I

Igor in Go-go!
А то когда много функций - искать, кто что должен уметь становится сложно
источник

АП

Александр Попов in Go-go!
Constantine
а как тесты писать?
ты про тесты хендлеров или чего?
источник

C

Constantine in Go-go!
Александр Попов
ты про тесты хендлеров или чего?
тесты тестов
источник

АП

Александр Попов in Go-go!
ой давай только без сарказм, ну реально
источник

I

Igor in Go-go!
Просто вот эти строчки можно, не думая, в любую функцию копировать и оно будет работать:
_, fname := utils.FuncName()
   log.Debug("function: " + fname)
   if !utils.CheckPermissions(groupId, ownerId, fname, callPermissions[fname]) {
   }
источник

АП

Александр Попов in Go-go!
Igor
Просто вот эти строчки можно, не думая, в любую функцию копировать и оно будет работать:
_, fname := utils.FuncName()
   log.Debug("function: " + fname)
   if !utils.CheckPermissions(groupId, ownerId, fname, callPermissions[fname]) {
   }
зато потом в мапе можно так нахреначится
источник

I

Igor in Go-go!
Александр Попов
зато потом в мапе можно так нахреначится
как?
источник