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)); }