Как установить роль при регистрации нового пользователя с помощью strapi?

Я пытаюсь зарегистрировать пользователя и хочу знать, как мне установить роль администратора. Я пытался

user: {
  username: "elialber",
  email: "[email protected]",
  password: "123456789",
  role: ???
}

Я использую Angular5 и просто api strapi


person Elialber Lopes    schedule 23.04.2018    source источник


Ответы (5)


Вы можете сделать это так

user: {  
username: "elialber",   
email: "[email protected]",  
password: "123456789",   
role: {   
_id: "5afac95f0eabf75b64c6ef92" // role id that your app generate     
}}
person albatros    schedule 29.05.2018
comment
У меня это не сработало. Я не думаю, что эта функция пока доступна. - person Shahzaib Salim; 15.10.2018

В Strapi Admin:

Роли и разрешения -> Расширенные настройки

Установите в поле Роль по умолчанию для аутентифицированных пользователей значение «Администратор».

person Shahzaib Salim    schedule 29.10.2018

Можно написать настраиваемую конечную точку для обновления роли пользователя и добавить соответствующее действие контроллера, как показано ниже:

module.exports = {
    updateUserRole: async ctx => {
       return await strapi.services.auth.updateUserRole (ctx.request.body.user, 
                                                         ctx.request.body.roleType);

    }
};

Сервис auth для обновления роли пользователя может быть определен в api / auth / services / Auth.js, как показано ниже:

    module.exports = {

        updateUserRole: async (userid, roleType) => {
            const role = await strapi.query('role', 'users-permissions').findOne({ type:roleType }, []);
        if ( role ) {
            strapi.query('user',  'users-permissions').update({ id: userid }, { role: role.id });
            return true;
        }

        return false;
    }
};
person Narendra Vadde    schedule 04.01.2020

шаг 1: перейти к node_modules / strapi-plugin-users-permissions / controllers / Auth.js шаг 2: перейти к строке 457 (в моем коде) шаг 3: комментарий params.role = role.id; как (//params.role = role.id;)

и теперь вы можете передать идентификатор роли, например 1, 2 или 3, как показано ниже

{
    "blocked":false,
    "confirmed":true,
    "username":"aziz",
    "email":"[email protected]",
    "password":"musa01010",
    "role": 2
}



and now I receive a response like:
{
    "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MzQsImlhdCI6MTYwMjUzMzk0MSwiZXhwIjoxNjA1MTI1OTQxfQ.xM2tmP8PUcwABiW9lmxkjkmcmdmckMB8wlQ1YsBOQI",
    "user": {
        "id": 34,
        "username": "aziz",
        "email": "[email protected]",
        "provider": "local",
        "confirmed": true,
        "blocked": false,
        "role": {
            "id": 2,
            "name": "Public",
            "description": "Default role given to the unauthenticated user.",
            "type": "public"
        },
        "created_at": "2020-10-12T20:19:01.285Z",
        "updated_at": "2020-10-12T20:19:01.299Z"
    }
}
person Malik Musa    schedule 12.10.2020

https://github.com/strapi/strapi/blob/master/packages/strapi-plugin-users-permissions/controllers/Auth.js#L261

Добавьте следующий код в root / plugins / users-permissions / controllers / Auth.js перед строкой 261.

const roleType = params.role || settings.default_role

и измените строку 261

const role = hasAdmin === false ? root : await strapi.query('role', 'users-permissions').findOne({ type: roleType }, []);

пост понравится

{
    "username": "test user",
    "email": "[email protected]",
    "password": "qqqqqq",
    "role": "boss" 
}

босс ‹--- роль, созданная из админки

работал на strapi v-3.0.0-alpha.25.2

person 黃翔煜    schedule 10.04.2019
comment
Я получаю следующую ошибку. ReferenceError: roleType не определен. что здесь может быть не так? - person just10minutes; 29.04.2019