Я внедряю Jhipster на своей работе и люблю ее.Меня попросили реализовать проверку безопасности, согласно которой одному пользователю нельзя разрешать редактировать сущность, созданную другим пользователем.Для этого мне нужны две вещи:
Сначала во всех сущностях добавьте отношение ManytoOne с сущностью пользователя.
В Backend вставьте проверку в контроллер при обновлении сущности, чтобы проверить, совпадает ли текущий зарегистрированный пользователь с тем, что хранится в БД.В передней части также та же логика, чтобы показать / скрыть кнопку редактирования.
Я сделал POC для этого, и это работает, но немного некрасиво, проверьте код:
public ResponseEntity<Entry> updateEntry(@RequestBody Entry entry) throws URISyntaxException {
log.debug("REST request to update Entry : {}", entry);
if (entry.getId() == null) {
throw new BadRequestAlertException("Invalid id", ENTITY_NAME, "idnull");
}
//here is my logic
Optional<Entry> entry_db = entryRepository.findOneWithEagerRelationships(entry.getId());
if(!entry_db.get().getUser().getId().equals(userService.getUserWithAuthorities().get().getId())) {
//throw someexception
}
//
Entry result = entryRepository.save(entry);
return ResponseEntity.ok()
.headers(HeaderUtil.createEntityUpdateAlert(ENTITY_NAME, entry.getId().toString()))
.body(result);
}
Есть ли какой-нибудь лучший или OOTB способ сделать это ???может быть что-то в безопасности весной я не знаю ??
Спасибо за помощь !!