Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Services.Authentication Prototype/Service/Provider/HeuristicLabRoleProvider.cs @ 3978

Last change on this file since 3978 was 3978, checked in by bfarka, 14 years ago

fixed bug in RomveUsersFromRoles and fixed some tests (1046)

File size: 6.1 KB
Line 
1using System;
2using System.Web.Security;
3using System.Linq;
4using Persistence;
5using System.Text;
6using System.Collections.Generic;
7
8namespace Service.Provider {
9  class HeuristicLabRoleProvider : RoleProvider {
10    protected string applicationName;
11
12    public override void AddUsersToRoles(string[] usernames, string[] roleNames) {
13      if (usernames != null && roleNames != null) {
14        Persistence.DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
15        List<HeuristicLabUser> users = db.HeuristicLabUsers.Where(u => usernames.Contains(u.UserName)).ToList<HeuristicLabUser>();
16        List<HeuristicLabRole> roles = db.HeuristicLabRole.Where(r => roleNames.Contains(r.RoleName)).ToList<HeuristicLabRole>();
17        foreach (HeuristicLabUser user in users) {
18          foreach (HeuristicLabRole role in roles) {
19            HeuristicLabUserRole userRole = new HeuristicLabUserRole();
20            userRole.HeuristicLabRole = role;
21            userRole.HeuristicLabUser = user;
22            db.HeuristicLabUserRole.InsertOnSubmit(userRole);
23          }
24        }
25        db.SubmitChanges();
26        db.Dispose();
27      }
28    }
29
30    public override string ApplicationName {
31      get {
32        return this.applicationName;
33      }
34      set {
35        this.applicationName = value;
36      }
37    }
38
39    public override void CreateRole(string roleName) {
40      CreateRole(roleName, false);
41
42    }
43
44    public virtual void CreateRole(String roleName, bool isPermission) {
45      if (roleName != null) {
46        Persistence.DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
47        HeuristicLabRole role = new HeuristicLabRole();
48        role.RoleName = roleName;
49        role.IsPermission = isPermission;
50        db.HeuristicLabRole.InsertOnSubmit(role);
51        db.SubmitChanges();
52        db.Dispose();
53      }
54    }
55
56    public override bool DeleteRole(string roleName, bool throwOnPopulatedRole) {
57      throw new NotImplementedException();
58    }
59
60    public override string[] FindUsersInRole(string roleName, string usernameToMatch) {
61      List<string> returnValue = new List<string>();
62      Persistence.DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
63      if (roleName != null && db.HeuristicLabRole.Count(r => r.RoleName == roleName) == 1) {
64        HeuristicLabRole role = db.HeuristicLabRole.Single(r => r.RoleName == roleName);
65        foreach (HeuristicLabUserRole userRole in role.HeuristicLabUserRoles) {
66          if (userRole.HeuristicLabUser.UserName.Contains(usernameToMatch)) {
67            returnValue.Add(userRole.HeuristicLabUser.UserName);
68          }
69        }
70      }
71      db.Dispose();
72      return returnValue.ToArray();
73    }
74
75    public override string[] GetAllRoles() {
76      List<string> roleList = new List<string>();
77
78      Persistence.DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
79      List<HeuristicLabRole> roles = new List<HeuristicLabRole>(db.HeuristicLabRole.Select(r => r));
80      foreach (HeuristicLabRole r in roles) {
81        roleList.Add(r.RoleName);
82      }
83      db.Dispose();
84
85      return roleList.ToArray();
86    }
87
88    public override string[] GetRolesForUser(string username) {
89      List<string> roleList = new List<string>();
90      DataClassesDataContext context = DatabaseUtil.createDataClassesDataContext();
91      if (username != null && context.HeuristicLabUsers.Count(u => u.UserName == username) > 0) {
92
93        Persistence.HeuristicLabUser user = context.HeuristicLabUsers.Single(u => u.UserName == username);
94        foreach (Persistence.HeuristicLabUserRole userRole in user.HeuristicLabUserRoles) {
95          roleList.Add(userRole.HeuristicLabRole.RoleName);
96        }
97      }
98      context.Dispose();
99      return roleList.ToArray();
100    }
101
102    public override string[] GetUsersInRole(string roleName) {
103      List<string> userList = new List<string>();
104      DataClassesDataContext context = DatabaseUtil.createDataClassesDataContext();
105      if (roleName != null && context.HeuristicLabRole.Count(r => r.RoleName == roleName) > 0) {
106
107        Persistence.HeuristicLabRole role = context.HeuristicLabRole.Single(r => r.RoleName == roleName);
108        foreach (Persistence.HeuristicLabUserRole roleUser in role.HeuristicLabUserRoles) {
109          if(!userList.Contains(roleUser.HeuristicLabUser.UserName))
110            userList.Add(roleUser.HeuristicLabUser.UserName);
111        }
112      }
113      context.Dispose();
114      return userList.ToArray();
115    }
116
117    public override bool IsUserInRole(string username, string roleName) {
118      bool returnValue = false;
119      DataClassesDataContext context = DatabaseUtil.createDataClassesDataContext();
120      if (username != null && roleName != null) {
121        returnValue = (context.HeuristicLabUserRole.Count(ur => ur.HeuristicLabRole.RoleName == roleName && ur.HeuristicLabUser.UserName == username) > 0);
122      }
123      context.Dispose();
124      return returnValue;
125    }
126
127    public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames) {
128
129      DataClassesDataContext context = DatabaseUtil.createDataClassesDataContext();
130
131      foreach (string userName in usernames) {
132        if (userName != null && context.HeuristicLabUsers.Count(u => u.UserName == userName) > 0) {
133          Persistence.HeuristicLabUser user = context.HeuristicLabUsers.Single(u => u.UserName == userName);
134          foreach (Persistence.HeuristicLabUserRole userRole in user.HeuristicLabUserRoles) {
135            if (roleNames.Contains(userRole.HeuristicLabRole.RoleName)) {
136              context.HeuristicLabUserRole.DeleteOnSubmit(userRole);
137              //deleteList.Add(userRole);
138            }//if
139          }//foreach
140        }//if
141      }//foreach
142      context.SubmitChanges();
143      context.Dispose();
144    }
145
146    public override bool RoleExists(string roleName) {
147
148      Persistence.DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
149      bool returnValue = (db.HeuristicLabRole.Count(r => r.RoleName == roleName) == 1);
150      db.Dispose();
151      return returnValue;
152
153    }
154  }
155}
Note: See TracBrowser for help on using the repository browser.