Projekt

Obecné

Profil

Stáhnout (2.54 KB) Statistiky
| Větev: | Tag: | Revize:
1
package cz.zcu.kiv.backendapi.user;
2

    
3
import cz.zcu.kiv.backendapi.user.permission.Permission;
4
import lombok.Data;
5
import lombok.NoArgsConstructor;
6
import org.hibernate.annotations.Type;
7
import org.springframework.security.core.GrantedAuthority;
8
import org.springframework.security.core.authority.SimpleGrantedAuthority;
9
import org.springframework.security.core.userdetails.UserDetails;
10

    
11
import javax.persistence.Column;
12
import javax.persistence.Entity;
13
import javax.persistence.Id;
14
import javax.persistence.Table;
15
import java.util.ArrayList;
16
import java.util.Collection;
17
import java.util.List;
18

    
19
/**
20
 * User entity representing application user
21
 */
22
@Data
23
@NoArgsConstructor
24
@Entity
25
@Table(name = "users")
26
public class UserEntity implements UserDetails {
27
    /**
28
     * Name
29
     */
30
    private String name;
31

    
32
    /**
33
     * Email - serves as username and must be unique - serves as ID
34
     */
35
    @Id
36
    private String email;
37

    
38
    /**
39
     * Password
40
     */
41
    private String password;
42

    
43
    /**
44
     * Permissions
45
     */
46
    private byte permissions;
47

    
48

    
49
    /**
50
     * Whether the user is admin or not
51
     */
52
    @Column(name = "is_admin")
53
    @Type(type = "numeric_boolean")
54
    private boolean isAdmin;
55

    
56
    public UserEntity(String name, String email, String password, byte permissions, boolean isAdmin) {
57
        this.name = name;
58
        this.email = email;
59
        this.password = password;
60
        this.permissions = permissions;
61
        this.isAdmin = isAdmin;
62
    }
63

    
64
    @Override
65
    public Collection<? extends GrantedAuthority> getAuthorities() {
66
        final List<GrantedAuthority> authorities = new ArrayList<>();
67
        if (isAdmin) {
68
            authorities.add(new SimpleGrantedAuthority(Role.ADMIN.getRole()));
69
        } else {
70
            authorities.add(new SimpleGrantedAuthority(Role.USER.getRole()));
71
        }
72
        for (Permission permission : Permission.values()) {
73
            if ((permission.getBit() & permissions) == permission.getBit()) {
74
                authorities.add(new SimpleGrantedAuthority(permission.getName()));
75
            }
76
        }
77

    
78
        return authorities;
79
    }
80

    
81
    public String getPassword() {
82
        return password;
83
    }
84

    
85
    @Override
86
    public String getUsername() {
87
        return email;
88
    }
89

    
90
    @Override
91
    public boolean isAccountNonExpired() {
92
        return true;
93
    }
94

    
95
    @Override
96
    public boolean isAccountNonLocked() {
97
        return true;
98
    }
99

    
100
    @Override
101
    public boolean isCredentialsNonExpired() {
102
        return true;
103
    }
104

    
105
    @Override
106
    public boolean isEnabled() {
107
        return true;
108
    }
109
}
(5-5/7)