feat(admin): reset a user's recommendations from the users panel
ci / api / api (push) Successful in 40s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 55s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m10s
ci / db / db (push) Successful in 2m35s
ci / ts / ts (packages + web) (push) Successful in 1m23s
ci / api / api (push) Successful in 40s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 55s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m10s
ci / db / db (push) Successful in 2m35s
ci / ts / ts (packages + web) (push) Successful in 1m23s
- POST /admin/users/{id}/reset-recommendations clears the taste profile
(onboarding, CF vector, bandit), play stats and wave impressions; likes,
dislikes and history stay, wave sessions stay so a playing wave keeps going
- moderators may reset plain users, admins anyone including themselves;
the reset is written to the audit log
- users panel gets the menu action with a confirmation; docs updated
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
b27b915b63
commit
978f03b8f8
20 files changed
+551
-274
No files matched your search
@@ -43,12 +43,13 @@ type UserAction int
|
||||
|
||||
// Действия над пользователями.
|
||||
const (
|
||||
UserCreate UserAction = iota // создать пользователя с ролью target
|
||||
UserEdit // изменить отображаемое имя
|
||||
UserResetPassword // сбросить пароль
|
||||
UserBlock // заблокировать / разблокировать
|
||||
UserChangeRole // сменить роль (target — текущая роль)
|
||||
UserDelete // удалить
|
||||
UserCreate UserAction = iota // создать пользователя с ролью target
|
||||
UserEdit // изменить отображаемое имя
|
||||
UserResetPassword // сбросить пароль
|
||||
UserBlock // заблокировать / разблокировать
|
||||
UserChangeRole // сменить роль (target — текущая роль)
|
||||
UserDelete // удалить
|
||||
UserResetRecommendations // сбросить профиль рекомендаций
|
||||
)
|
||||
|
||||
// Actor — кто действует (или над кем). ID нужен, чтобы запретить действия над собой.
|
||||
@@ -71,7 +72,7 @@ func CanManageUser(actor, target Actor, action UserAction) bool {
|
||||
return true
|
||||
case RoleModerator:
|
||||
switch action {
|
||||
case UserCreate, UserEdit, UserResetPassword, UserBlock:
|
||||
case UserCreate, UserEdit, UserResetPassword, UserBlock, UserResetRecommendations:
|
||||
return target.Role == RoleUser
|
||||
default:
|
||||
return false
|
||||
|
||||
Reference in new issue
Block a user