示例#1
0
        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);
        }
示例#2
0
文件: UsersBLL.cs 项目: ben889/myb2b
 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);
 }
示例#3
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);
        }
示例#4
0
 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();
     }
 }
示例#5
0
        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;
        }