2016-05-23 9 views
0

Я создал 2 пользовательских роли для моего проекта. Я хочу назначить роль пользователям во время процесса регистрации. Как я могу назначить роль по умолчанию пользователю во время регистрации.Назначение ролей пользователям во время регистрации - проверка подлинности с помощью deadbolt

Также, как я могу создать 2 регистрационные формы, если у меня есть две разные роли. Мне нужно два типа регистрации для разных типов ролей.

ответ

0

В способе save вашей реализации UserServicePlugin вы можете добавлять роли при создании пользователя. Например, если у вас есть модель под названием User, который реализует интерфейс ригель в Subject,

@Override 
public Object save(final AuthUser authUser) 
{ 
    final boolean isExistingUser = User.existsByAuthUserIdentity(authUser); 
    Long id = null; 
    if (!isExistingUser) 
    { 
     User user = User.create(authUser); 
     id = user.id; 

     user.giveRole("some role name"); 
    } 
    return id; 
} 

giveRole метод что-то вроде этого.

public void giveRole(String roleName) 
{ 
    SecurityRole role = SecurityRole.findByRoleName(roleName); 
    if (!roles.contains(role)) 
    { 
     roles = new ArrayList<>(roles); 
     roles.add(role); 
     update(); 
     Ebean.saveAssociation(this, "roles"); 
    } 
} 

Это предполагает, что вы используете Ebean и Java, но механики одинаковы, если вы используете Scala или другой инструмент базы данных.

Для назначения роли, назначенной для создания пользователя, переместите бит, в котором вы назначаете роли из метода save, и в (например) методы контроллера, с помощью которых происходят эти регистрации.

+0

Пожалуйста, пользуйтесь библиотекой воспроизведения с подтверждением подлинности, встроенной в deadbolt. Я могу создавать роли, добавляя роли в DataInitializer.java. Но я не знаю, как создать отдельную регистрацию для моей роли менеджера и роли администратора. if (SecurityRole.find.findRowCount() == 0) { for (final String roleName: Arrays .asList (контроллеры.Application.ADMIN_ROLE)) { final SecurityRole role = new SecurityRole(); role.roleName = roleName; role.save(); } } –