public async Task <AppUser> AddSystemUser ( AppKey appKey, string machineName, IHashedPassword password, DateTimeOffset timeAdded ) { var user = await Add ( AppUserName.SystemUser(appKey, machineName), password, new PersonName($"{appKey.Name.DisplayText.Replace(" ", "")} {appKey.Type.DisplayText.Replace(" ", "")} {machineName}"), new EmailAddress(""), timeAdded ); var app = await factory.Apps().App(appKey); var role = await app.Role(AppRoleName.System); await user.AddRole(role); return(user); }
public Task <AppUser[]> SystemUsers(AppKey appKey) => factory.DB .Users .Retrieve() .Where(u => u.UserName.StartsWith(AppUserName.SystemUser(appKey, "").Value)) .Select(u => factory.User(u)) .ToArrayAsync();
public async Task <AppUserModel> Execute(AddSystemUserRequest model) { var systemUser = await appFactory.Users().SystemUser(model.AppKey, model.MachineName); var hashedPassword = hashedPasswordFactory.Create(model.Password); if (systemUser.UserName().Equals(AppUserName.SystemUser(model.AppKey, model.MachineName))) { await systemUser.ChangePassword(hashedPassword); } else { systemUser = await appFactory.Users().AddSystemUser ( model.AppKey, model.MachineName, hashedPassword, clock.Now() ); } var app = await appFactory.Apps().App(model.AppKey); if (!app.Key().Equals(model.AppKey)) { app = await appFactory.Apps().Add(model.AppKey, "", clock.Now()); } var systemRole = await app.Role(AppRoleName.System); if (systemRole.ID.IsNotValid()) { systemRole = await app.AddRole(AppRoleName.System); } var modifier = await app.DefaultModifier(); var assignedRoles = await systemUser.AssignedRoles(modifier); if (!assignedRoles.Any(r => r.Name().Equals(AppRoleName.System))) { await systemUser.AddRole(systemRole); } return(systemUser.ToModel()); }
public Task <AppUser> SystemUser(AppKey appKey, string machineName) => User(AppUserName.SystemUser(appKey, machineName));