Пример #1
0
        public object AuthorizeWithLoginAndPassword([FromQuery] AuthorizationQueryModel authData)
        {
            var user     = userRepository.SelectWithEmail(authData.Login);
            var password = System.Text.Encoding.UTF8.GetBytes(authData.Password);

            using (var pbkdf2 = new Rfc2898DeriveBytes(password, user.Salt, PasswordHashIterations, HashAlgorithmName.SHA256))
            {
                var hash = pbkdf2.GetBytes(32);
                if (Toolbox.UnsafeCompare(hash, user.PasswordHash))
                {
                    var token = tokenRepository.CreateToken(user.Uuid, new TimeSpan(TokenDurationDays, 0, 0, 0));
                    return(TokenModel.Create(token));
                }
            }

            throw new AuthenticationException("invalid login or password");
        }
        public IActionResult GetPowers(AuthorizationQueryModel queryModel)
        {
            var powers = powerDataService.GetList(queryModel.AppInfoID).MapperList <ExternalFunctionPowerViewModel, FunctionPower>();

            if (queryModel.Type.HasValue)
            {
                var departmentID = queryModel.NodeID;
                if (queryModel.Type == FunctionPowerType.Role)
                {
                    var role = roleDataService.Get(queryModel.NodeID);
                    departmentID = role.DepartmentID;
                }
                var departmentPowers = departmentDataService.GetPowers(departmentID, queryModel.AppInfoID);
                //赋予选中
                departmentPowers.ForEach(x => powers.Where(y => y.ID == x.FunctionPowerID).First().State = new ExternalFunctionPowerViewModelState {
                    Checked = true
                });
                if (queryModel.Type == FunctionPowerType.Role)
                {
                    foreach (var item in powers)
                    {
                        if (item.State != null && item.State.Checked)
                        {
                            item.Requisite = true;
                            item.Color     = "silver";
                            item.Icon      = "vp-requisite";
                            item.State     = new ExternalFunctionPowerViewModelState
                            {
                                Checked = true
                            };
                        }
                    }
                    var rolePowers = roleDataService.GetPowers(queryModel.NodeID, queryModel.AppInfoID);
                    rolePowers.ForEach(x =>
                                       powers.Where(y => y.ID == x.FunctionPowerID).First().State = new ExternalFunctionPowerViewModelState {
                        Checked = true
                    }
                                       );
                }
            }
            powers = ExternalFunctionPowerSort.Sort(powers);
            return(Json(powers));
        }