Free cookie consent management tool by TermsFeed Policy Generator

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

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

created impl and test of AddUsersToRoles (#1046)

File size: 4.4 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
23            db.HeuristicLabUserRole.InsertOnSubmit(userRole);
24
25          }
26        }
27        db.SubmitChanges();
28      }
29    }
30
31    public override string ApplicationName {
32      get {
33        return this.applicationName;
34      }
35      set {
36        this.applicationName = value;
37      }
38    }
39
40    public override void CreateRole(string roleName) {
41      CreateRole(roleName, false);
42
43    }
44
45    public virtual void CreateRole(String roleName, bool isPermission) {
46      if (roleName != null) {
47        Persistence.DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
48        HeuristicLabRole role = new HeuristicLabRole();
49        role.RoleName = roleName;
50        role.IsPermission = isPermission;
51        db.HeuristicLabRole.InsertOnSubmit(role);
52        db.SubmitChanges();
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.HeuristicLabUserRole) {
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      List<HeuristicLabRole> roles = new List<HeuristicLabRole>(DatabaseUtil.createDataClassesDataContext().HeuristicLabRole.Select(r => r));
79      foreach (HeuristicLabRole r in roles) {
80        roleList.Add(r.RoleName);
81      }
82
83      return roleList.ToArray();
84    }
85
86    public override string[] GetRolesForUser(string username) {
87      List<string> roleList = new List<string>();
88      DataClassesDataContext context = DatabaseUtil.createDataClassesDataContext();
89      if (username != null && context.HeuristicLabUsers.Count(u => u.UserName == username) > 0) {
90
91        Persistence.HeuristicLabUser user = context.HeuristicLabUsers.Single(u => u.UserName == username);
92        foreach (Persistence.HeuristicLabUserRole userRole in user.HeuristicLabUserRole) {
93          roleList.Add(userRole.HeuristicLabRole.RoleName);
94        }
95      }
96      context.Dispose();
97      return roleList.ToArray();
98    }
99
100    public override string[] GetUsersInRole(string roleName) {
101      throw new NotImplementedException();
102    }
103
104    public override bool IsUserInRole(string username, string roleName) {
105      throw new NotImplementedException();
106    }
107
108    public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames) {
109      throw new NotImplementedException();
110    }
111
112    public override bool RoleExists(string roleName) {
113
114      Persistence.DataClassesDataContext db = DatabaseUtil.createDataClassesDataContext();
115      bool returnValue = (DatabaseUtil.createDataClassesDataContext().HeuristicLabRole.Count(r => r.RoleName == roleName) == 1);
116      db.Dispose();
117      return returnValue;
118
119    }
120  }
121}
Note: See TracBrowser for help on using the repository browser.