Free cookie consent management tool by TermsFeed Policy Generator

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

Last change on this file since 4000 was 4000, checked in by mholper, 14 years ago

implemented last Method HeuristicLabRoleProvider.DeleteRole and UnitTest (#1046)
--> HeuristicLabRoleProvider finished now, all HeuristicLabRoleProviderTest passed (#1077)

File size: 6.9 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    //
57    // RoleProvider.DeleteRole
58    //
59    public override bool DeleteRole(string roleName, bool throwOnPopulatedRole) {
60      String[] roleArray = new String[1];
61      roleArray[0] = roleName;
62      Persistence.DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
63
64      if (!RoleExists(roleName)) {
65        return false;
66        //throw new Exception("Role does not exist.");
67      }
68
69      if (throwOnPopulatedRole && GetUsersInRole(roleName).Length > 0) {
70        return false;
71        //throw new ProviderException("Cannot delete a populated role.");
72      }
73
74      RemoveUsersFromRoles(GetUsersInRole(roleName), roleArray);
75
76      Persistence.HeuristicLabRole role = db.HeuristicLabRole.Single(r => r.RoleName == roleName);
77      db.HeuristicLabRole.DeleteOnSubmit(role);
78      db.Dispose();
79
80      return true;
81    }
82
83    public override string[] FindUsersInRole(string roleName, string usernameToMatch) {
84      List<string> returnValue = new List<string>();
85      Persistence.DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
86      if (roleName != null && db.HeuristicLabRole.Count(r => r.RoleName == roleName) == 1) {
87        HeuristicLabRole role = db.HeuristicLabRole.Single(r => r.RoleName == roleName);
88        foreach (HeuristicLabUserRole userRole in role.HeuristicLabUserRoles) {
89          if (userRole.HeuristicLabUser.UserName.Contains(usernameToMatch)) {
90            returnValue.Add(userRole.HeuristicLabUser.UserName);
91          }
92        }
93      }
94      db.Dispose();
95      return returnValue.ToArray();
96    }
97
98    public override string[] GetAllRoles() {
99      List<string> roleList = new List<string>();
100
101      Persistence.DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
102      List<HeuristicLabRole> roles = new List<HeuristicLabRole>(db.HeuristicLabRole.Select(r => r));
103      foreach (HeuristicLabRole r in roles) {
104        roleList.Add(r.RoleName);
105      }
106      db.Dispose();
107
108      return roleList.ToArray();
109    }
110
111    public override string[] GetRolesForUser(string username) {
112      List<string> roleList = new List<string>();
113      DataClassesDataContext context = DatabaseUtil.createDataClassesDataContext();
114      if (username != null && context.HeuristicLabUsers.Count(u => u.UserName == username) > 0) {
115
116        Persistence.HeuristicLabUser user = context.HeuristicLabUsers.Single(u => u.UserName == username);
117        foreach (Persistence.HeuristicLabUserRole userRole in user.HeuristicLabUserRoles) {
118          roleList.Add(userRole.HeuristicLabRole.RoleName);
119        }
120      }
121      context.Dispose();
122      return roleList.ToArray();
123    }
124
125    public override string[] GetUsersInRole(string roleName) {
126      List<string> userList = new List<string>();
127      DataClassesDataContext context = DatabaseUtil.createDataClassesDataContext();
128      if (roleName != null && context.HeuristicLabRole.Count(r => r.RoleName == roleName) > 0) {
129
130        Persistence.HeuristicLabRole role = context.HeuristicLabRole.Single(r => r.RoleName == roleName);
131        foreach (Persistence.HeuristicLabUserRole roleUser in role.HeuristicLabUserRoles) {
132          if (!userList.Contains(roleUser.HeuristicLabUser.UserName))
133            userList.Add(roleUser.HeuristicLabUser.UserName);
134        }
135      }
136      context.Dispose();
137      return userList.ToArray();
138    }
139
140    public override bool IsUserInRole(string username, string roleName) {
141      bool returnValue = false;
142      DataClassesDataContext context = DatabaseUtil.createDataClassesDataContext();
143      if (username != null && roleName != null) {
144        returnValue = (context.HeuristicLabUserRole.Count(ur => ur.HeuristicLabRole.RoleName == roleName && ur.HeuristicLabUser.UserName == username) > 0);
145      }
146      context.Dispose();
147      return returnValue;
148    }
149
150    public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames) {
151
152      DataClassesDataContext context = DatabaseUtil.createDataClassesDataContext();
153
154      foreach (string userName in usernames) {
155        if (userName != null && context.HeuristicLabUsers.Count(u => u.UserName == userName) > 0) {
156          Persistence.HeuristicLabUser user = context.HeuristicLabUsers.Single(u => u.UserName == userName);
157          foreach (Persistence.HeuristicLabUserRole userRole in user.HeuristicLabUserRoles) {
158            if (roleNames.Contains(userRole.HeuristicLabRole.RoleName)) {
159              context.HeuristicLabUserRole.DeleteOnSubmit(userRole);
160              //deleteList.Add(userRole);
161            }//if
162          }//foreach
163        }//if
164      }//foreach
165      context.SubmitChanges();
166      context.Dispose();
167    }
168
169    public override bool RoleExists(string roleName) {
170
171      Persistence.DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
172      bool returnValue = (db.HeuristicLabRole.Count(r => r.RoleName == roleName) == 1);
173      db.Dispose();
174      return returnValue;
175
176    }
177  }
178}//HeuristicLabRoleProvider
Note: See TracBrowser for help on using the repository browser.