private UserModel GetUserModel(UserRolesInfo userRoles, Dictionary <string, Dictionary <CourseRole, List <string> > > coursesForUsers, List <string> coursesIds, HashSet <string> tempCoursesIds) { var user = new UserModel(userRoles) { CourseRoles = new Dictionary <string, ICoursesRolesListModel> { { LmsRoles.SysAdmin.ToString(), new SingleCourseRolesModel { HasAccess = userRoles.Roles.Contains(LmsRoles.SysAdmin.ToString()), ToggleUrl = Url.Content($"~/Account/{nameof(ToggleSystemRole)}?userId={userRoles.UserId}&role={LmsRoles.SysAdmin}"), // Url.Action is slow: https://www.jitbit.com/alexblog/263-fastest-way-to-generate-urls-in-an-aspnet-mvc-app/ } } } }; if (!coursesForUsers.TryGetValue(userRoles.UserId, out var coursesForUser)) { coursesForUser = new Dictionary <CourseRole, List <string> >(); } foreach (var role in Enum.GetValues(typeof(CourseRole)).Cast <CourseRole>().Where(roles => roles != CourseRole.Student)) { user.CourseRoles[role.ToString()] = new ManyCourseRolesModel { CourseRoles = coursesIds .Select(s => new CourseRoleModel { Role = role, CourseId = s, CourseTitle = courseManager.GetCourse(s).Title, HasAccess = coursesForUser.ContainsKey(role) && coursesForUser[role].Contains(s.ToLower()), ToggleUrl = Url.Content($"~/Account/{nameof(ToggleRole)}?courseId={s}&userId={user.UserId}&role={role}"), UserName = user.UserVisibleName, IsTempCourse = tempCoursesIds.Contains(s) }) .OrderBy(s => s.CourseTitle, StringComparer.InvariantCultureIgnoreCase) .ToList() }; } var systemAccesses = systemAccessesRepo.GetSystemAccesses(user.UserId).Select(a => a.AccessType); user.SystemAccesses = Enum.GetValues(typeof(SystemAccessType)) .Cast <SystemAccessType>() .ToDictionary( a => a, a => new SystemAccessModel { HasAccess = systemAccesses.Contains(a), ToggleUrl = Url.Content($"~/Account/{nameof(ToggleSystemAccess)}?userId={user.UserId}&accessType={a}"), UserName = user.UserVisibleName, } ); return(user); }
public static int AddUser(string UserName, string PassWord, string DisplayName , string FirstName, string LastName, string Email, string UserType, List <int> roleids, ref string resultMessage) { try { //if (!UserType.Equals(Common.enumUserType.host.ToString()) && !UserType.Equals(Common.enumUserType.admin.ToString())) //{ // if (CompanyId.Trim().Length == 0) // return 0; //} Model.UserInfo userinfo = GetModel(UserName.Trim(), "UserName", "*");// UsersController.GetUserByUserName(UserName.Trim()); if (userinfo != null && userinfo.UserID > 0) { return(-2); } Model.UserInfo info = new Model.UserInfo(); info.UserName = UserName; info.DisplayName = DisplayName; info.PassWord = Common.Utility.MD5Encrypt(PassWord); info.FirstName = FirstName; info.LastName = LastName; info.Email = Email; info.IsLock = false; info.UserType = UserType; info.CreatedOnDate = DateTime.Now; info.LastLoginDate = DateTime.Now; int result = Insert(info, ReturnTypes.Identity);// Components.UsersController.AddUser(info); if (result > 0) { if (UserType == Common.enumUserType.company.ToString()) { //Components.UsersController.DeleteUserRolesByUserID(result); UserRolesBLL.Delete(result, "userid"); if (roleids != null) { foreach (int roleid in roleids) { //Components.UsersController.AddUserRole(result, roleid, 0); UserRolesInfo urinfo = new UserRolesInfo(); urinfo.UserID = result; urinfo.RoleID = roleid; urinfo.CreatedByUserID = 0; urinfo.CreatedOnDate = DateTime.Now; UserRolesBLL.Add(urinfo); } } } resultMessage = "成功"; } else { resultMessage = "失败"; } return(result); } catch (Exception exc) { resultMessage = exc.Message; } return(0); }
private UserModel GetUserModel(UserRolesInfo userRoles, Dictionary <string, Dictionary <CourseRole, List <string> > > coursesForUsers, List <string> coursesIds) { var user = new UserModel(userRoles) { CourseRoles = new Dictionary <string, ICoursesRolesListModel> { { LmsRoles.SysAdmin.ToString(), new SingleCourseRolesModel { HasAccess = userRoles.Roles.Contains(LmsRoles.SysAdmin.ToString()), ToggleUrl = Url.Action("ToggleSystemRole", new { userId = userRoles.UserId, role = LmsRoles.SysAdmin }) } } } }; if (!coursesForUsers.TryGetValue(userRoles.UserId, out var coursesForUser)) { coursesForUser = new Dictionary <CourseRole, List <string> >(); } foreach (var role in Enum.GetValues(typeof(CourseRole)).Cast <CourseRole>().Where(roles => roles != CourseRole.Student)) { user.CourseRoles[role.ToString()] = new ManyCourseRolesModel { CourseRoles = coursesIds .Select(s => new CourseRoleModel { CourseId = s, CourseTitle = courseManager.GetCourse(s).Title, HasAccess = coursesForUser.ContainsKey(role) && coursesForUser[role].Contains(s.ToLower()), ToggleUrl = Url.Action("ToggleRole", new { courseId = s, userId = user.UserId, role }) }) .OrderBy(s => s.CourseTitle, StringComparer.InvariantCultureIgnoreCase) .ToList() }; } var systemAccesses = systemAccessesRepo.GetSystemAccesses(user.UserId).Select(a => a.AccessType); user.SystemAccesses = Enum.GetValues(typeof(SystemAccessType)) .Cast <SystemAccessType>() .ToDictionary( a => a, a => new SystemAccessModel { HasAccess = systemAccesses.Contains(a), ToggleUrl = Url.Action("ToggleSystemAccess", "Account", new { userId = user.UserId, accessType = a }) } ); return(user); }
protected void ibtnAddRolesToUser_Click(object sender, ImageClickEventArgs e) { if (userid > 0) { //UsersController.AddUserRole(userid, Convert.ToInt32(ddlRoles.SelectedValue), base.UserID); Model.UserRolesInfo info = new UserRolesInfo(); info.UserID = userid; info.RoleID = Convert.ToInt32(ddlRoles.SelectedValue); BLL.UserRolesBLL.Add(info); Repeater1bind(); } }
private UserModel GetUserModel(UserRolesInfo userRoles, Dictionary <string, Dictionary <CourseRole, List <string> > > coursesForUsers, List <string> courses) { var user = new UserModel(userRoles) { CoursesAccess = new Dictionary <string, ICoursesAccessListModel> { { LmsRoles.SysAdmin, new SingleCourseAccessModel { HasAccess = userRoles.Roles.Contains(LmsRoles.SysAdmin), ToggleUrl = Url.Action("ToggleSystemRole", new { userId = userRoles.UserId, role = LmsRoles.SysAdmin }) } } } }; Dictionary <CourseRole, List <string> > coursesForUser; if (!coursesForUsers.TryGetValue(userRoles.UserId, out coursesForUser)) { coursesForUser = new Dictionary <CourseRole, List <string> >(); } foreach (var role in Enum.GetValues(typeof(CourseRole)).Cast <CourseRole>().Where(roles => roles != CourseRole.Student)) { user.CoursesAccess[role.ToString()] = new ManyCourseAccessModel { CoursesAccesses = courses .Select(s => new CourseAccessModel { CourseId = s, HasAccess = coursesForUser.ContainsKey(role) && coursesForUser[role].Contains(s), ToggleUrl = Url.Action("ToggleRole", new { courseId = s, userId = user.UserId, role }) }) .ToList() }; } return(user); }
public void DeleteCompetitionAndCascade() { using (var databaseSession = NHibernateHelper.OpenSession()) { var userRolesInfos = (from userRolesInfo in databaseSession.Query<UserRolesInfo>() where userRolesInfo.User.Id.Equals(this.testUser.Id) select userRolesInfo).ToArray(); Assert.IsNotNull(userRolesInfos); Assert.AreEqual(0, userRolesInfos.Count()); var toAdd = new UserRolesInfo { Competition = this.testCompetition, Role = this.testRole, User = this.testUser }; using (var transaction = databaseSession.BeginTransaction()) { databaseSession.Save(toAdd); transaction.Commit(); } } using (var databaseSession = NHibernateHelper.OpenSession()) { var competition = (from dbcompetition in databaseSession.Query<Competition>() where dbcompetition.Id.Equals(this.testCompetition.Id) select dbcompetition).First(); var userRolesInfos = (from userRolesInfo in databaseSession.Query<UserRolesInfo>() where userRolesInfo.User.Id.Equals(this.testUser.Id) select userRolesInfo).ToArray(); Assert.IsNotNull(userRolesInfos); Assert.AreEqual(1, userRolesInfos.Count()); using (var transaction = databaseSession.BeginTransaction()) { databaseSession.Delete(competition); transaction.Commit(); } userRolesInfos = (from userRolesInfo in databaseSession.Query<UserRolesInfo>() where userRolesInfo.User.Id.Equals(this.testUser.Id) select userRolesInfo).ToArray(); Assert.IsNotNull(userRolesInfos); Assert.AreEqual(0, userRolesInfos.Count()); } }
public void WriteAndRead() { using (var databaseSession = NHibernateHelper.OpenSession()) { var userRolesInfos = from userRolesInfo in databaseSession.Query<UserRolesInfo>() where userRolesInfo.User.Id.Equals(this.testUser.Id) select userRolesInfo; Assert.IsNotNull(userRolesInfos); Assert.AreEqual(0, userRolesInfos.Count()); var toAdd = new UserRolesInfo { Competition = this.testCompetition, Role = this.testRole, User = this.testUser }; using (var transaction = databaseSession.BeginTransaction()) { databaseSession.Save(toAdd); transaction.Commit(); } } using (var databaseSession = NHibernateHelper.OpenSession()) { var userRolesInfos = from userRolesInfo in databaseSession.Query<UserRolesInfo>() where userRolesInfo.User.Id.Equals(this.testUser.Id) select userRolesInfo; Assert.IsNotNull(userRolesInfos); Assert.AreEqual(1, userRolesInfos.Count()); using (var transaction = databaseSession.BeginTransaction()) { databaseSession.Delete(userRolesInfos.First()); transaction.Commit(); } } using (var databaseSession = NHibernateHelper.OpenSession()) { var userRolesInfos = from userRolesInfo in databaseSession.Query<UserRolesInfo>() where userRolesInfo.User.Id.Equals(this.testUser.Id) select userRolesInfo; Assert.IsNotNull(userRolesInfos); Assert.AreEqual(0, userRolesInfos.Count()); } }
/// <summary> /// Adds a new competition. /// </summary> /// <param name="user"> /// The user trying to add or update a competition. /// </param> /// <param name="competition"> /// The competition to add or update. /// </param> /// <returns> /// The <see cref="Guid"/> of the new competition. /// </returns> public Competition AddCompetition(User user, Competition competition) { competition.Id = Guid.NewGuid(); competition.VerifyDataContent(); var rolesLogic = new RolesLogic(); var role = rolesLogic.DefaultOwnerRole; if (role == null) { // This should never happen throw new NullReferenceException(string.Format("Default Owner Role \"{0}\" is not present.", rolesLogic.DefaultOwnerRoleName)); } var userRolesInfo = new UserRolesInfo { Competition = competition, Role = role, User = user }; using (var transaction = this.competitionRepository.StartTransaction()) { // First add the new competition to database this.competitionRepository.Add(competition); // Then add the user as admin this.userRolesInfoRepository.Add(userRolesInfo); // Commit transaction transaction.Commit(); } return competition; }