Invited non-admin users cannot set their password: set-password requires 'create user' permission
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 1/5
- Temps estimé
- Moins d'une heure
- Accessibilité débutants
- 90/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- php
- Domaine
- api, authorization, backend
Piste de recherche
Commencez par Fleetbase\Http\Controllers\Internal\v1\UserController::setCurrentUserPassword() et comparez ses attributs d’autorisation avec ceux des endpoints frères de l’utilisateur courant, tels que changeCurrentUserEmail et acceptCompanyInvite. Vérifiez que la requête de définition du mot de passe pour un utilisateur authentifié invité qui n’est pas administrateur ne nécessite plus la permission de créer des utilisateurs et s’exécute correctement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
Fleetbase\Http\Controllers\Internal\v1\UserController::setCurrentUserPassword() (POST /int/v1/users/set-password) is missing the #[SkipAuthorizationCheck] attribute that its sibling "current user" endpoints have (changeCurrentUserEmail, acceptCompanyInvite, setUserLocale, …). The authorization layer therefore applies the default permission for a POST on users, which is create user.
Impact
A newly invited user who is not an administrator cannot set their initial password. After accepting the invitation, the console opens the "Set a new password" modal (needs_password: true), and saving it fails with:
User is not authorized to create user
The modal has no close/decline button, so the user is stuck. Administrators are not affected because they hold the create user permission, which hides the bug.
Versions
Fleetbase v0.7.63 (core-api v1.6.62).
Reproduction
- IAM → Users → invite a new user with a non-admin role (e.g. Operations Manager from Fleet-Ops).
- Accept the invitation from the email.
- Enter and confirm a password in the "Set a new password" modal →
POST /int/v1/users/set-password→ error "User is not authorized to create user".
Suggested fix
#[SkipAuthorizationCheck]
public function setCurrentUserPassword(UpdatePasswordRequest $request)
The method only acts on $request->user(), so it needs authentication but no IAM permission.
Workaround
The invited user (already active after accepting) uses "Forgot your password?" on the login page to set the password by email.
- Langage dominant
- PHP
- Étoiles
- 20
- Forks
- 41
- Merge moyen
- 1 j 17 min
- PR mergées (30 j)
- 31
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Issues similaires
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
-
sync-en
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 1 jour
-
sync-en
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Yoast/wordpress-seo#23658 ·
Les mainteneurs répondent en général sous 3 jours
-
fixed
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
firefly-iii/firefly-iii#12934 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour