2016-06-24 2 views
1

Я создаю приложение с использованием JHipster и MongoDb, и я пытаюсь добавить новые роли. Я добавил новые константы в систему безопасности/ВластиConstants, но в моей коллекции jhi_authorities Я не вижу изменений.Добавление новых ролей JHipster и MongoDb

Кто-нибудь знает, как добавить мою новую роль в эту коллекцию?

ответ

0

Вы также должны добавить свои новые полномочия в MongoDb, см. InitialSetupMigration.java, либо добавьте их сюда, либо создайте новую миграцию. См doc

+0

If I сделайте это, я буду настаивать на том, чтобы каждое развертывание моего приложения имело эти полномочия, у меня более динамичный сценарий, поэтому я бы предпочел способ в том, что я могу решить в каждой ситуации развертывания, ведь те будут Властями, я думаю @ Michał Styś является faci Аналогичная проблема. – carpinchosaurio

+1

Итак, вы не можете использовать константы в java, и вы должны реализовать свое собственное управление ролью или дождаться этой функции или внести свой вклад в нее. https://github.com/jhipster/generator-jhipster/issues/1995 –

+0

Это не потому, что вы иналиализуете свои полномочия в коде (InitialSetupMigration), что каждое развертывание вашего приложения имеет эти полномочия. Ваш код может просто читать их как свойства из внешнего application.yml –

0

Конечно, я это сделал, но в процессе сборки я получил следующее сообщение:

[ restartedMain] com.github.mongobee.Mongobee    : [ChangeSet: id=01-addAuthorities, author=initiator, changeLogClass=com.anuglarspring.app.config.dbmigrations.InitialSetupMigration, changeSetMethod=addAuthorities] passed over 
+0

Это потому, что изменение уже было применено, возможно, при первом запуске приложения. Что вам нужно сделать, это, вероятно, добавить новый файл миграции или найти другой способ добавить эти роли в свою коллекцию. И тогда вы можете добавить эти роли (уже созданные в коллекции) в свой 'AuthoritiesConstant'. Я столкнулся с аналогичной проблемой = ( – carpinchosaurio

+0

Я столкнулся с той же проблемой, что вам нужно сделать, это сбросить базу данных и снова создать и запустить приложение. Это решило проблему для меня. Не знаю, является ли это «правильным» способом . – smb564

0

Создать новый @ChangeLg и написать метод с @ChangeSet Как в этом примере

@ChangeLog(order = "002") 
public class AddOthersAuthorities { 

@ChangeSet(order = "01", author = "initiator", id = "03-addOthersAuthorities") 
    public void addAuthorities(DB db) { 
     DBCollection authorityCollection = db.getCollection("jhi_authority"); 
     // Role for super administration 
     authorityCollection.insert(
       BasicDBObjectBuilder.start() 
       .add("_id", "ROLE_SUPER_ADMIN") 
       .get()); 
     // Role for company administration 
     authorityCollection.insert(
       BasicDBObjectBuilder.start() 
       .add("_id", "ROLE_COMPANY_ADMIN") 
       .get()); 
     // Role for branch administration 
     authorityCollection.insert(
       BasicDBObjectBuilder.start() 
       .add("_id", "ROLE_BRANCH_ADMIN") 
       .get()); 
     // Role for employee 
     authorityCollection.insert(
       BasicDBObjectBuilder.start() 
       .add("_id", "ROLE_EMPLOYEE") 
       .get()); 
     // Role for registred customer 
     authorityCollection.insert(
       BasicDBObjectBuilder.start() 
       .add("_id", "ROLE_CUSTOMER") 
       .get()); 
     // Role for non registred customer 
     authorityCollection.insert(
       BasicDBObjectBuilder.start() 
       .add("_id", "ROLE_GUEST") 
       .get()); 
    } 

} 
+0

где я должен создать этот файл? –