Example #1
0
        public LoginUserVM Login(string userName, string password)
        {
            var user = _repository.FindSingle(u => u.Account == userName);
            if (user == null)
            {
                throw new Exception("用户帐号不存在");
            }
            user.CheckPassword(password);

            var loginVM = new LoginUserVM
            {
                User = user
            };
            //用户角色
            var userRoleIds =
                _relevanceRepository.Find(u => u.FirstId == user.Id && u.Key == "UserRole").Select(u => u.SecondId).ToList();

            //用户角色与自己分配到的模块ID
            var moduleIds =
                _relevanceRepository.Find(
                    u =>
                        (u.FirstId == user.Id && u.Key == "UserModule") ||
                        (u.Key == "RoleModule" && userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId).ToList();
            //用户角色与自己分配到的菜单ID
            var elementIds =
               _relevanceRepository.Find(
                   u =>
                       (u.FirstId == user.Id && u.Key == "UserElement") ||
                       (u.Key == "RoleElement" && userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId).ToList();
            //得出最终用户拥有的模块
            loginVM.Modules = _moduleRepository.Find(u => moduleIds.Contains(u.Id)).OrderBy(u => u.SortNo).MapToList<ModuleView>();

            //模块菜单权限
            foreach (var module in loginVM.Modules)
            {
                module.Elements = _moduleElementRepository.Find(u => u.ModuleId == module.Id && elementIds.Contains(u.Id)).OrderBy(u => u.Sort).ToList();
            }

            //用户角色与自己分配到的资源ID
            var resourceIds = _relevanceRepository.Find(
                    u =>
                        (u.FirstId == user.Id && u.Key == "UserResource") ||
                        (u.Key == "RoleResource" && userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId).ToList();
            loginVM.Resources = _resourceRepository.Find(u => resourceIds.Contains(u.Id)).ToList();

            //用户角色与自己分配到的机构ID
            var orgids = _relevanceRepository.Find(
                    u =>
                        (u.FirstId == user.Id && u.Key == "UserAccessedOrg") ||
                        (u.Key == "RoleAccessedOrg" && userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId).ToList();
            loginVM.AccessedOrgs = _orgRepository.Find(u => orgids.Contains(u.Id)).ToList();

            return loginVM;
        }
Example #2
0
        /// <summary>
        /// 开发者登陆
        /// </summary>
        public LoginUserVM LoginByDev()
        {
            var loginUser = new LoginUserVM
            {
                User = new User
                {
                    Name = "开发者账号",
                    Account = "System"
                }
            };
            loginUser.Modules = _moduleRepository.Find(null).MapToList<ModuleView>();
            //模块包含的菜单
            foreach (var module in loginUser.Modules)
            {
                module.Elements = _moduleElementRepository.Find(u => u.ModuleId == module.Id).OrderBy(u => u.Sort).ToList();
            }

            loginUser.Resources = _resourceRepository.Find(null).OrderBy(u => u.SortNo).ToList();

            loginUser.AccessedOrgs = _orgRepository.Find(null).OrderBy(u => u.SortNo).ToList();
            return loginUser;
        }