1 | using System;
|
---|
2 | using System.Web.Security;
|
---|
3 | using System.Linq;
|
---|
4 | using Persistence;
|
---|
5 | using System.Text;
|
---|
6 | using System.Collections.Generic;
|
---|
7 |
|
---|
8 | namespace 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 | }
|
---|