public PasswordActionResponse PasswordAction(PasswordActionRequest request, Guid userID) { AccountDto userAccount = _baseService.GetAccountById(userID, true); Guid accountToScann = userID; if (userAccount.Role == "Admin") { accountToScann = request.AccountId; } AccountDto account = _baseService.GetAccountById(accountToScann, true); PasswordDto savedPassword = _baseService.GetPasswords(request, account).FirstOrDefault(); if (StaticConfiguration.GetAcrionByProfile(userAccount.Role) == null) { throw new Exception("Invalid Profile"); } else { ApplicationAction actions = StaticConfiguration.GetAcrionByProfile(userAccount.Role).Find(x => x.Id == request.ActionId); if (actions == null) { throw new Exception("Invalid Action"); } Func <PasswordDto, PasswordDto, AccountDto, PasswordActionRequest, PasswordActionResponse> func; if (!this.ActionIdToFunction.TryGetValue(request.ActionId, out func)) { throw new Exception("Δεν βρέθηκε ενέργεια για το Id: " + request.ActionId); } return(func(savedPassword, request.Password, account, request)); } }
public IEnumerable <PasswordDto> GetPasswords(PasswordActionRequest request, AccountDto account) { List <PasswordDto> passwords = new List <PasswordDto>(); _storageService.GetPasswords().ForEach(x => { if (account.Passwords.Find(accountPass => accountPass.PasswordId == x.PasswordId) == null) { return; } bool haseCorrectValues = false; haseCorrectValues = (!string.IsNullOrWhiteSpace(request?.Password?.Name) ? request?.Password?.Name == x?.Name : true) && (!string.IsNullOrWhiteSpace(request?.Password?.LogInLink) ? request?.Password?.LogInLink == x?.LogInLink : true) && (!string.IsNullOrWhiteSpace(request?.Password?.UserName) ? request?.Password?.LogInLink == x?.LogInLink : true); if (haseCorrectValues) { passwords.Add(x); } }); return(passwords); }
private PasswordActionResponse UpdateOrAddPasswordFunc(PasswordDto savedPass, PasswordDto requesPass, AccountDto account, PasswordActionRequest request) { if (account.Passwords.Find(pass => requesPass?.PasswordId == pass.PasswordId) != null) { _baseService.UpdatePassword(requesPass); } else { Guid newPassId = Guid.NewGuid(); requesPass.PasswordId = newPassId; account.Passwords.Add(requesPass); _baseService.UpdateAccount(account, account.Role, true); _baseService.AddNewPassword(requesPass); } return(new PasswordActionResponse() { Passwords = account.Passwords }); }
private PasswordActionResponse GetPaswordsFunc(PasswordDto savedPass, PasswordDto requesPass, AccountDto account, PasswordActionRequest request) { return(new PasswordActionResponse() { Passwords = _baseService.GetPasswords(request, account).ToList() }); }
private PasswordActionResponse RemovePasswordFunc(PasswordDto savedPass, PasswordDto requesPass, AccountDto account, PasswordActionRequest request) { int index = account.Passwords.FindIndex(pass => requesPass?.PasswordId == pass.PasswordId); if (index < 0 && index > account.Passwords.Count()) { throw new Exception("invalid PasswordId"); } account.Passwords.RemoveAt(index); _baseService.UpdateAccount(account, account.Role, true); _baseService.RemovePassword(requesPass); return(new PasswordActionResponse() { Passwords = account.Passwords }); }
public Response <PasswordActionResponse> PasswordAction([FromBody] PasswordActionRequest request) { return(_exceptionHandler.HandleException(() => _passwordService.PasswordAction(request, Guid.Parse(HttpContext.User.Identity.Name)), request.ActionId)); }