summaryrefslogtreecommitdiffstats
path: root/src/com/gitblit/wicket/models/User.java
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2011-05-11 22:07:18 -0400
committerJames Moger <james.moger@gitblit.com>2011-05-11 22:07:18 -0400
commitdfb88962fdbd29f59abe92178bb042738d57c3e1 (patch)
treecd54a9fb35accaa038799d8c866847be0fe11150 /src/com/gitblit/wicket/models/User.java
parent573e8a017bb626f083901f43a0cf754d4dd22ee0 (diff)
downloadgitblit-dfb88962fdbd29f59abe92178bb042738d57c3e1.tar.gz
gitblit-dfb88962fdbd29f59abe92178bb042738d57c3e1.zip
Add user. Implemented repository view and git access restrictions.
Diffstat (limited to 'src/com/gitblit/wicket/models/User.java')
-rw-r--r--src/com/gitblit/wicket/models/User.java89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/com/gitblit/wicket/models/User.java b/src/com/gitblit/wicket/models/User.java
new file mode 100644
index 00000000..07848396
--- /dev/null
+++ b/src/com/gitblit/wicket/models/User.java
@@ -0,0 +1,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 User 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 User(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;
+ }
+}