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();
Esempio n. 3
0
        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));