Beispiel #1
0
        public List <Menu> GetMenuListByRole(int id)
        {
            PeAdmin     admin    = _peAdminRepository.FindById(id);
            List <Menu> menuList = new List <Menu>();

            if ((admin?.adminCode ?? "").Trim().ToUpper() == "SuperAdmin".ToUpper())
            {
                menuList = _menuRepository.FindAll().OrderBy(x => x.sortIndex).ToList();
            }
            else if (id == 0 || (admin?.adminCode ?? "").Trim().ToUpper() == "Admin".ToUpper())
            {
                menuList = _menuRepository.FindAll().Where(x => x.state == 1).OrderBy(x => x.sortIndex).ToList();
            }
            else
            {
                menuList = (from r in _peRoleRepository.FindListByClause(x => x.id == admin.adminType)
                            join s in _menuRoleRepository.FindAll() on r.id equals s.roleId
                            join m in _menuRepository.FindAll().Where(x => x.state == 1) on s.menuId equals m.id
                            select m).OrderBy(x => x.sortIndex).ToList();
            }
            return(AddChildN(0, menuList));
        }
        public async Task <IActionResult> Login([FromBody] encryData pData)
        {
            try
            {
                PeAdmin admin = await Task.Factory.StartNew(() => _peAdminService.FindByClause(x => (x.adminCode ?? "").ToUpper() == pData.data.code.ToUpper()));

                if (admin == null)
                {
                    result.success   = false;
                    result.returnMsg = "不存在该管理员";
                    return(Ok(result));
                }
                if (admin.adminPwd.ToUpper() != SecurityHelper.ToMD5((pData.data.password ?? "").Trim()).Substring(8, 16).ToUpper())
                {
                    result.success   = false;
                    result.returnMsg = "密码不正确";
                    return(Ok(result));
                }
                if (admin.state == 0)
                {
                    result.success   = false;
                    result.returnMsg = "当前账号已被停用,请联系管理员";
                    return(Ok(result));
                }


                var client = new HttpClient();

                var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
                {
                    Address      = Appsettings.GetSectionValue("AppSettings:IdSHttpsUrl") + "/connect/token",
                    ClientId     = "clientanduser",
                    ClientSecret = "secret",
                    UserName     = "******",
                    Password     = "******",
                    Scope        = "api1"
                });

                if (tokenResponse.IsError)
                {
                    throw new Exception(tokenResponse.Error);
                }
                admin.token = tokenResponse.AccessToken;

                //记录登录时间
                admin.loginDate = DateTime.Now;
                _peAdminService.Update(admin);

                //清空密码返回
                admin.adminPwd    = null;
                admin.menudata    = _menuService.GetMenuListByRole(admin.id);
                result.returnData = admin;
                return(Ok(result));
            }
            catch (Exception e)
            {
                log.Error(e.Message);
                result.success   = false;
                result.returnMsg = "登录失败,请稍后重试";
                return(Ok(result));
            }
        }