Projekt

Obecné

Profil

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

    
3
import lombok.Data;
4
import lombok.NoArgsConstructor;
5
import org.hibernate.annotations.Type;
6
import org.springframework.security.core.GrantedAuthority;
7
import org.springframework.security.core.authority.SimpleGrantedAuthority;
8
import org.springframework.security.core.userdetails.UserDetails;
9

    
10
import javax.persistence.*;
11
import java.util.ArrayList;
12
import java.util.Collection;
13
import java.util.List;
14

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

    
28
    /**
29
     * Email - serves as username and must be unique - serves as Id
30
     */
31
    @Id
32
    private String email;
33

    
34
    /**
35
     * Password
36
     */
37
    private String password;
38

    
39
    /**
40
     * Permissions
41
     */
42
    private byte permissions;
43

    
44

    
45
    /**
46
     * Whether the user is admin or not
47
     */
48
    @Column(name = "is_admin")
49
    @Type(type = "numeric_boolean")
50
    private boolean isAdmin;
51

    
52
    public UserEntity(String name, String email, String password, byte permissions, boolean isAdmin) {
53
        this.name = name;
54
        this.email = email;
55
        this.password = password;
56
        this.permissions = permissions;
57
        this.isAdmin = isAdmin;
58
    }
59

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

    
74
        return authorities;
75
    }
76

    
77
    public String getPassword() {
78
        return password;
79
    }
80

    
81
    @Override
82
    public String getUsername() {
83
        return email;
84
    }
85

    
86
    @Override
87
    public boolean isAccountNonExpired() {
88
        return true;
89
    }
90

    
91
    @Override
92
    public boolean isAccountNonLocked() {
93
        return true;
94
    }
95

    
96
    @Override
97
    public boolean isCredentialsNonExpired() {
98
        return true;
99
    }
100

    
101
    @Override
102
    public boolean isEnabled() {
103
        return true;
104
    }
105
}
(6-6/8)