2016-05-09 4 views
0

Я разрабатываю приложение для школы, и я решаю разработать свой веб-Api с помощью Loopback. У моего приложения есть два типа пользователей: Учителя и Студенты. Я заметил, что Loopback по умолчанию использует мою модель пользователя, и кажется, что ее нельзя изменить. Как я могу это реализовать? Создание 2 других таблиц Учителя и учеников и их связь с таблицей «Пользователи»? Если я это сделаю, могу ли я установить правила безопасности, используя эти таблицы? Как мне это сделать?Loopback - Как реализовать различного типа пользователей

Спасибо вам большое

+0

Заметим, что вы не можете изменять встроенные модели (например, пользователь), но вы можете [расширить] (https://docs.strongloop.com/display/public/LB/Extending+built-in+models) их, что является очень распространенный сценарий. При этом я бы пошел с [ролями] (https://docs.strongloop.com/display/public/LB/Defining+and+using+roles), например, предлагал @Medet, потому что учитель/ученик действительно роль пользователя. У них обоих есть имя пользователя, адрес электронной почты, пароль и т. Д. У них просто разные возможности. По крайней мере, так это выглядит на первый взгляд. Это всегда зависит от вашего сценария. –

ответ

1

Нет необходимости создавать различные таблицы пользователя, если нет drastical разница между loopback:user, поскольку петлевой дает много встроенных хелперов (проверка электронной почты, восстановление пароля, сила пароля, уникальное имя пользователя) , В вашем случае лучше использовать роли, docs

//create user 
User.create({ 
    username: 'Obama', 
    email: '[email protected]', 
    password: 'opensesame' 
}, function(err, user) { 
    if (err) return cb(err); 

    //create the teacher role 
    Role.create({ 
     name: 'teacher' 
    }, function(err, role) { 
     if (err) cb(err); 

     //make obama a teacher 
     role.principals.create({ 
     principalType: RoleMapping.USER, 
     principalId: user.id //obama id 
     }, function(err, principal) { 
     cb(err); 
     }); 
    }); 
    }); 

Затем, если вы хотите какой-то маршрут (скажем уроки), чтобы иметь доступ только для учителей, а затем добавить конфигурации в models/lesson.json модели

{ 
    "accessType": "EXECUTE", 
    "principalType": "ROLE", 
    "principalId": "teacher", // <== role 
    "permission": "ALLOW", 
    "property": "find" 
} 
Смежные вопросы