feat(admin): manage server updates and local configuration
ci / api / api (push) Successful in 52s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m9s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m35s
release / release (версия и заметки) (push) Successful in 5s
release / android (APK в релиз) (push) Successful in 4m6s
ci / db / db (push) Successful in 1m15s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m19s
ci / ts / ts (packages + web) (push) Successful in 2m34s
release / desktop (Linux и Windows в релиз) (push) Successful in 14m27s
release / prune (старые файлы и прогоны) (push) Successful in 6s
ci / api / api (push) Successful in 52s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m9s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m35s
release / release (версия и заметки) (push) Successful in 5s
release / android (APK в релиз) (push) Successful in 4m6s
ci / db / db (push) Successful in 1m15s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m19s
ci / ts / ts (packages + web) (push) Successful in 2m34s
release / desktop (Linux и Windows в релиз) (push) Successful in 14m27s
release / prune (старые файлы и прогоны) (push) Successful in 6s
This commit is contained in:
1 parent
e33abc948c
commit
a29a8b18ad
49 files changed
+3604
-353
No files matched your search
@@ -16,6 +16,7 @@ const (
|
||||
PermSuggestTracks // предлагать треки, видеть свои предложения
|
||||
PermReviewUploads // очередь, одобрение, правка метаданных; даёт флаг, не роль
|
||||
PermSystemStatus // статус рекомендательной системы, аудит
|
||||
PermManageUpdates // обновление сервера; admin или выданное право
|
||||
)
|
||||
|
||||
var permissions = map[Permission][]Role{
|
||||
@@ -25,6 +26,7 @@ var permissions = map[Permission][]Role{
|
||||
PermViewLibraryStatus: {RoleModerator, RoleAdmin},
|
||||
PermSuggestTracks: {RoleModerator, RoleAdmin},
|
||||
PermSystemStatus: {RoleAdmin},
|
||||
PermManageUpdates: {RoleAdmin},
|
||||
}
|
||||
|
||||
// Can сообщает, есть ли у роли глобальное право.
|
||||
@@ -40,6 +42,12 @@ func Can(r Role, p Permission) bool {
|
||||
|
||||
// Allowed — право конкретного пользователя. Аудит загрузок не вытекает из роли admin.
|
||||
func (p Principal) Allowed(perm Permission) bool {
|
||||
if perm == PermManageUpdates {
|
||||
return p.Role == RoleAdmin || p.ManagesUpdates
|
||||
}
|
||||
if perm == PermAdminPanel && p.ManagesUpdates {
|
||||
return true
|
||||
}
|
||||
if perm == PermReviewUploads {
|
||||
return p.ReviewsUploads
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user