James Moger
2011-05-11 511554c6bdd7daa080506fb62400bf6d295ab9e2
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
package com.gitblit.wicket.models;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 
import com.gitblit.Constants.AccessRestrictionType;
 
public class UserModel implements Serializable {
 
    private static final long serialVersionUID = 1L;
 
    private String username;
    private String password;
    private String cookie;
    private boolean canAdmin = false;
    private List<String> repositories = new ArrayList<String>();
 
    public UserModel(String username) {
        this.username = username;
    }
 
    public String getUsername() {
        return username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public void canAdmin(boolean value) {
        canAdmin = value;
    }
 
    public boolean canAdmin() {
        return canAdmin;
    }
    
    public boolean canClone(RepositoryModel repository) {
        return canAccess(repository, AccessRestrictionType.CLONE);
    }
 
    public boolean canPush(RepositoryModel repository) {
        return canAccess(repository, AccessRestrictionType.PUSH);
    }
    
    public boolean canView(RepositoryModel repository) {
        return canAccess(repository, AccessRestrictionType.VIEW);
    }
    
    private boolean canAccess(RepositoryModel repository, AccessRestrictionType minimum) {
        if (repository.accessRestriction.atLeast(minimum)) {
            // repository is restricted, must check roles
            return canAdmin || repositories.contains(repository.name);
        } else {
            // repository is not restricted
            return true;
        }
    }
 
    public void setCookie(String cookie) {
        this.cookie = cookie;
    }
 
    public String getCookie() {
        return cookie;
    }
 
    public void setRepositories(List<String> repositories) {
        this.repositories.clear();
        this.repositories.addAll(repositories);
    }
 
    public void addRepository(String name) {
        repositories.add(name.toLowerCase());
    }
 
    public List<String> getRepositories() {
        return repositories;
    }
 
    public String toString() {
        return username;
    }
}