public async Task <TriggerResult> CheckLinkedSecurityUser(EntityModel model, List <dynamic> entities, TriggerExecutionContext context, dynamic options) { foreach (var entity in entities) { entity.Name = entity.FirstName + " " + entity.LastName; SecurityUser user = await SecurityUser.SelectByKey(entity.Id); if (user == null) { user = new SecurityUser() { Id = entity.Id, Name = entity.Name, Email = entity.Email }; await user.ApplyAsync(); } else { if (user.Name != entity.Name || user.Email != entity.Email) { user.StartTracking(); user.Name = entity.Name; user.Email = entity.Email; await user.ApplyAsync(); } } await EmployeeBusiness.CheckDefaultRole(user.Id, "Users"); } return(TriggerResult.Success()); }
private async Task <SecurityUser> CreateDwUser(User user) { var dwuser = new SecurityUser { Id = Guid.NewGuid(), Name = DwUserName(user) }; await SecurityUser.ApplyAsync(dwuser); user.WorkflowUserId = dwuser.Id; await UserRepository.UpdateAsync(user); return(dwuser); }
public async static Task Registration(Guid key, string domainLogin, string login, string password) { var invite = await InvitationLetter.SelectByKey(key); if (invite == null) { throw new Exception("The invitation key is incorrect!"); } if (invite.DateExpired < DateTime.Now) { throw new Exception("The invitation key is expired!"); } var employee = await Employee.SelectByKey(invite.EmployeeId); if (employee == null) { throw new Exception("The employee is not found!"); } var su = await SecurityUser.SelectByKey(invite.EmployeeId); if (su == null) { su = new SecurityUser() { Id = employee.Id, Name = employee.Name, Email = employee.Email }; await su.ApplyAsync(); } await CheckDefaultRole(employee.Id, "Users"); var credentials = await SecurityUser.GetCredentialByUserId(su.Id); var containerCredential = new ObservableEntityContainer(credentials.Select(c => c.AsDynamicEntity), SecurityCredential.Model); containerCredential.RemoveAll(); if (!string.IsNullOrEmpty(domainLogin)) { var domainCredential = new SecurityCredential() { Id = Guid.NewGuid(), SecurityUserId = su.Id, Login = domainLogin, AuthenticationType = 1 }; containerCredential.Merge(new List <dynamic>() { domainCredential.AsDynamicEntity }); } if (!string.IsNullOrEmpty(login) && !string.IsNullOrEmpty(password)) { var passwordSalt = HashHelper.GenerateSalt(); var passwordHash = HashHelper.GenerateStringHash(password, passwordSalt); var customCredential = new SecurityCredential() { Id = Guid.NewGuid(), SecurityUserId = su.Id, Login = login, PasswordHash = passwordHash, PasswordSalt = passwordSalt, AuthenticationType = 0 }; containerCredential.Merge(new List <dynamic>() { customCredential.AsDynamicEntity }); } await containerCredential.ApplyAsync(); await InvitationLetter.DeleteAsync(new Guid[] { key }); }