В способе 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
, и в (например) методы контроллера, с помощью которых происходят эти регистрации.
Пожалуйста, пользуйтесь библиотекой воспроизведения с подтверждением подлинности, встроенной в 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(); } } –