Strongloop REST API: изменить пароль

Я хотел бы реализовать простой «изменить пароль», чтобы это мог сделать авторизованный пользователь. Поэкспериментировав с проводником, мне удалось написать ACL для пользовательской модели (мое расширение пользователя по умолчанию), которые позволяют пользователю изменять свои данные:

{
      "principalType": "ROLE",
      "principalId": "$owner",
      "accessType": "WRITE",
      "permission": "ALLOW"
}

Однако, когда я пытаюсь из проводника указать конечную точку PUT /users/{id} с новыми учетными данными, она молча терпит неудачу, т. Е. Возвращается нормально, но не выполняет изменение пароля:

ЗАПРОС:

http://localhost:3000/api/users/6?access_token=6CVOuMZCLB8deH7e5t8xJtzDlWjU98WUCRCSGO6zdjW0bhSR6Z20vddl7dIWepF8

ДАННЫЕ:

{

  "credentials":
    {"email":"[email protected]", "password": "ppito"}

}

(Пользователь 6 уже аутентифицирован).

ОТКЛИК:

{
  "realm": null,
  "username": "pepito",
  "credentials": {
    "email": "[email protected]",
    "password": "ppito"
  },
  "challenges": null,
  "email": "[email protected]",
  "emailVerified": true,
  "verificationToken": "2a9c25fa6e858db5894f98cd3f0be3694041f148781896cb5775ff30da1f367c7843ac4b60013fd47c34c6f1a862a5cabb77cf2807c101da7f2acfcdd8853ec7",
  "status": null,
  "created": null,
  "lastUpdated": null,
  "id": 6
}

Однако пароль остается неизменным (пробовал с выходом/входом из проводника).

Не могли бы вы помочь мне?


person pd_uy    schedule 07.08.2015    source источник


Ответы (1)


Работа с паролем - это другая игра. Для смены пароля используйте следующий код:

var AccessToken = Customer.app.models.AccessToken;
        AccessToken.findById(access_token, function (err, token) {
            if (err) cb(err);
            else {
                Customer.findById(token.userId, function (err, user) {
                    if (err) {
                        cb(err);
                    }

                    if (user == null || user == undefined) cb(new Error('user is undefined'));

                    user.updateAttribute('password', password, function (err, user) {
                        if (err) {
                            cb(err);
                        }

                        cb(null, 'success');
                    });
                });
            }
        })

updateAttribute — это то, что позволяет вам вносить обновления.

Я никогда не мог изменить пароль от swagger.

person Anoop.P.A    schedule 12.11.2015