Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
2 / 2 / 2
Регистрация: 20.01.2017
Сообщений: 41

пользователь у которого установленая в энити роль админ

19.02.2017, 10:21. Показов 2996. Ответов 4

Студворк — интернет-сервис помощи студентам
как добавить в энити роль админ ?
имплеменчу или свойства надо добавить еще?
Java
1
2
3
@Entity
@Table(name = "administration")
public class Administration implements UserDetails{
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.02.2017, 10:21
Ответы с готовыми решениями:

Вывод чатов в которых наш пользователь - админ,но пользователь,которого мы приглашает не состоит
Функция должна получить чаты в котором наш пользователь - админ,и получить чаты в которых пользователь,которого приглашают в чат -...

Роль бухгалтера и пользователь Администратор
Какую особенную возможность можно сделать для пользователя администратор, чтобы её не было у бухгалтера? Только попроще. Спасибо!

Чат: пользователь программы<=> админ.
Реально ли сделать без мороки с доп. компонентами онлайн чат(не обязательно онлайн) общение пользователя и администратора в программе?...

4
 Аватар для Borsche
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
19.02.2017, 10:45
Лучший ответ Сообщение было отмечено new_wave как решение

Решение

Так энтити не пойдёт.
Смотри к примеру у тебя есть класс User implements UserDetails. У него должно быть поле
Java
1
2
@Enumerated(EnumType.STRING)
private Role authorities;
В свою очередь нужно создать энум который имплементирует GrantedAuthority
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public enum Role implements GrantedAuthority {
    ROLE_USER, ROLE_ADMIN;
 
    @Override
    public String getAuthority() {
        return name();
    }
 
    @Override
    public String toString() {
        return "ROLE_" + name();
    }
}
И при создании нового обьекта устанавливай нужную роль. К примеру
Java
1
2
3
4
5
6
7
8
9
    public void saveUser(User user) {
        user.setAccountNonExpired(true);
        user.setAccountNonLocked(true);
        user.setCredentialsNonExpired(true);
        user.setEnabled(true);
        user.setPassword(passwordEncoder.encode(user.getPassword()));
        user.setAuthorities(Role.ROLE_ADMIN);
        userDAO.saveUser(user);
    }
Добавлено через 5 минут
Единственное что забыл в классе Юзер нужно оверайдить методы интефейса и один из них public Collection<? extends GrantedAuthority> getAuthorities(), так как я делал роли не листом или там сэтом я зделал так
Java
1
2
3
4
5
6
@Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        List<Role> roles = new ArrayList<>();
        roles.add(getUserAuthorities());
        return roles;
    }
Этот метод для спринг секьюрити нужен.
1
2 / 2 / 2
Регистрация: 20.01.2017
Сообщений: 41
19.02.2017, 11:04  [ТС]
Переделал энтити вот так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import com.fasterxml.jackson.annotation.JsonBackReference;
import org.hibernate.annotations.GenericGenerator;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
 
import javax.persistence.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
 
@Entity
@Table(name = "administration")
public class Administration implements UserDetails{
    @Id
    @Column(name = "id_admin", unique = true, nullable = false)
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private long idPark;
 
    @Column(name = "fullname_client", nullable = false, length = 50)
    private String fullnameClient;
    @Column(name = "login", nullable = false, length = 50)
    private String login;
    @Column(name = "password", nullable = false, length = 50)
    private String password;
    @Column(name = "hash_session", nullable = false, length = 50)
    private String hashSession;
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "administration")
    @JsonBackReference
    private Set<Gift> giftSet;
 
    public Administration() {}
    public long getIdPark() {
        return idPark;
    }
    public void setIdPark(long idPark) {
        this.idPark = idPark;
    }
    public String getFullnameClient() {
        return fullnameClient;
    }
    public void setFullnameClient(String fullnameClient) {
        this.fullnameClient = fullnameClient;
    }
 
    public String getLogin() {
        return login;
    }
    public void setLogin(String login) {
        this.login = login;
    }
 
 
    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        List<Role> roles = new ArrayList<>();
        roles.add(getUserAuthorities());
        return roles;
    }
 
    public String getPassword() {
        return password;
    }
 
    @Override
    public String getUsername() {
        return null;
    }
 
    @Override
    public boolean isAccountNonExpired() {
        return false;
    }
 
    @Override
    public boolean isAccountNonLocked() {
        return false;
    }
 
    @Override
    public boolean isCredentialsNonExpired() {
        return false;
    }
 
    @Override
    public boolean isEnabled() {
        return false;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
    public String getHashSession() {
        return hashSession;
    }
    public void setHashSession(String hashSession) {
        this.hashSession = hashSession;
    }
    public Set<Gift> getGiftSet() {
        return giftSet;
    }
    public void setGiftSet(Set<Gift> giftSet) {
        this.giftSet = giftSet;
    }
}
Откуда надо импортировать Role ? (из спринг секьюрите)
Метод getUserAuthorities что за метод ?
Java
1
2
3
4
5
6
 @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        List<Role> roles = new ArrayList<>();
        roles.add(getUserAuthorities());
        return roles;
    }
0
 Аватар для Borsche
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
19.02.2017, 11:25
Лучший ответ Сообщение было отмечено new_wave как решение

Решение

Role это твой enum в котором прописаны возможные роли в твойм проэкте.
А public Collection<? extends GrantedAuthority> getAuthorities() этот метод нужен спринг секьюрити, он с помощью него вытаскивает роли твоей энтити и потом проверяет права доступа.
И опять же не вижу в твоей энтити поля Role
1
2 / 2 / 2
Регистрация: 20.01.2017
Сообщений: 41
19.02.2017, 12:32  [ТС]
энум создал
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import org.springframework.security.core.GrantedAuthority;
public enum Role implements GrantedAuthority {
    ROLE_USER, ROLE_ADMIN;
 
    @Override
    public String getAuthority() {
        return name();
    }
 
    @Override
    public String toString() {
        return "ROLE_" + name();
    }
}
энтити
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import com.fasterxml.jackson.annotation.JsonBackReference;
import org.hibernate.annotations.GenericGenerator;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
 
import javax.persistence.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
 
@Entity
@Table(name = "administration")
public class Administration implements UserDetails{
    @Enumerated(EnumType.STRING)
    private Role authorities;
    @Id
    @Column(name = "id_admin", unique = true, nullable = false)
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private long idPark;
 
    @Column(name = "fullname_client", nullable = false, length = 50)
    private String fullnameClient;
    @Column(name = "login", nullable = false, length = 50)
    private String login;
    @Column(name = "password", nullable = false, length = 50)
    private String password;
    @Column(name = "hash_session", nullable = false, length = 50)
    private String hashSession;
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "administration")
    @JsonBackReference
    private Set<Gift> giftSet;
 
    public Administration() {}
    public long getIdPark() {
        return idPark;
    }
    public void setIdPark(long idPark) {
        this.idPark = idPark;
    }
    public String getFullnameClient() {
        return fullnameClient;
    }
    public void setFullnameClient(String fullnameClient) {
        this.fullnameClient = fullnameClient;
    }
 
    public String getLogin() {
        return login;
    }
    public void setLogin(String login) {
        this.login = login;
    }
 
 
    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        List<Role> roles = new ArrayList<>();
        roles.add(getUserAuthorities());
        return roles;
    }
 
 
    public String getPassword() {
        return password;
    }
 
    @Override
    public String getUsername() {
        return null;
    }
 
    @Override
    public boolean isAccountNonExpired() {
        return false;
    }
 
    @Override
    public boolean isAccountNonLocked() {
        return false;
    }
 
    @Override
    public boolean isCredentialsNonExpired() {
        return false;
    }
 
    @Override
    public boolean isEnabled() {
        return false;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
    public String getHashSession() {
        return hashSession;
    }
    public void setHashSession(String hashSession) {
        this.hashSession = hashSession;
    }
    public Set<Gift> getGiftSet() {
        return giftSet;
    }
    public void setGiftSet(Set<Gift> giftSet) {
        this.giftSet = giftSet;
    }
}
где метод создан должен быть getUserAuthorities(); ? он его не находит в
Java
1
2
3
4
5
6
@Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        List<Role> roles = new ArrayList<>();
        roles.add(getUserAuthorities());
        return roles;
    }
Добавлено через 27 минут
Этот метод в сервисе должен добавить ?
Java
1
2
3
4
5
6
7
8
9
 public void saveUser(User user) {
        user.setAccountNonExpired(true);
        user.setAccountNonLocked(true);
        user.setCredentialsNonExpired(true);
        user.setEnabled(true);
        user.setPassword(passwordEncoder.encode(user.getPassword()));
        user.setAuthorities(Role.ROLE_ADMIN);
        userDAO.saveUser(user);
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2017, 12:32
Помогаю со студенческими работами здесь

Админ или обычный пользователь
Ребята, а есть ли какой-нить код, который бы определял под администратором ты или нет?

Роли (Админ, Пользователь, Модератор), как организовать правильно?
Добрый день! Пишу клиент-серверное приложение , возник такой вопрос: Как организовать роли в системе ? что бы кто мог редактировать а кто...

Создание чата, где админ видит, что набирает пользователь
Здравствуйте, друзья! Нужна ваша помощь. Может кто сталкивался или находил где-то способы создания чатов на сайте, в котором посимвольно...

Как лучше поступить при разделении полномочий админ/пользователь
Например для редактирования разделов/товаров/категорий при написании магазина: создавать отдельные представления для администраторов и...

Пользователь видит одну страницу а админ другую. Что случилось?
Приветствую! Я не знаю Bitrix, но т.*к. в среде обывателей и работодателей считается, что программист априори может всё из области ИТ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru