コード例 #1
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="userDbAccess">User Db Access</param>
 /// <param name="userCreator">User Creator</param>
 /// <param name="configuration">Configuration</param>
 /// <param name="logger">Logger</param>
 public DeploymentController(IUserDbAccess userDbAccess, IUserCreator userCreator, IOptions <ConfigurationData> configuration, ILogger <DeploymentController> logger)
 {
     _userDbAccess = userDbAccess;
     _userCreator  = userCreator;
     _firstTimeDeploymentPassword = configuration.Value.Misc.FirstTimeDeploymentPassword;
     _logger = logger;
 }
コード例 #2
0
        /// <summary>
        /// Checks for migratable data
        /// </summary>
        /// <param name="cancellationToken">Cancellation Token</param>
        /// <returns>Task for the async task</returns>
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            using (IServiceScope serviceScope = _serviceScopeFactory.CreateScope())
            {
                IUserDbAccess userDbAccess = (IUserDbAccess)serviceScope.ServiceProvider.GetService(typeof(IUserDbAccess));
                IDbSetup      dbSetup      = (IDbSetup)serviceScope.ServiceProvider.GetService(typeof(IDbSetup));
                ILogger       logger       = (ILogger)serviceScope.ServiceProvider.GetService(typeof(ILogger <AutoDataMigrator>));

                try
                {
                    await RemoveUnusedRolesForUsers(userDbAccess);
                }
                catch (Exception ex)
                {
                    logger.LogError(ex, "Could not remove old user roles");
                }

                try
                {
                    await dbSetup.CheckForNeededMigrations();
                }
                catch (Exception ex)
                {
                    logger.LogError(ex, "Could not migrate database");
                }
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: steffendx/GoNorth
        /// <summary>
        /// Configures the admin account
        /// </summary>
        /// <returns>Task</returns>
        private static async Task ConfigureAdminAccount()
        {
            ServiceProvider serviceProvider = ServiceProviderBuilder.BuildServiceProvider();

            IUserDbAccess userDbAccess = serviceProvider.GetService <IUserDbAccess>();

            if (await userDbAccess.DoesAdminUserExist())
            {
                MessageService.PrintAdminAccountExistMessage();
                return;
            }

            string email;

            do
            {
                try
                {
                    string displayName = MessageService.GetAdminAccountDisplayName();
                    email = MessageService.GetAdminAccountEMail();
                    string password = MessageService.GetAdminAccountPassword();

                    IUserCreator   userCreator = serviceProvider.GetService <IUserCreator>();
                    IdentityResult result      = await userCreator.CreateUser(new MockUrlHelper(), "https", displayName, email, password, RoleNames.Administrator);

                    if (!result.Succeeded)
                    {
                        throw new Exception(string.Join(',', result.Errors.Select(e => e.Description)));
                    }

                    MessageService.PrintSuccessCreatingAdminAccount();
                    break;
                }
                catch (Exception ex)
                {
                    MessageService.PrintErrorCreatingAdminAccount(ex);
                }
            }while(true);

            try
            {
                UserManager <GoNorthUser> userManager = serviceProvider.GetService <UserManager <GoNorthUser> >();
                GoNorthUser adminUser = await userManager.FindByEmailAsync(email);

                List <string> rolesToAdd = RoleNames.GetAllRoleNames().Where(r => r != RoleNames.Administrator).ToList();

                IdentityResult result = await userManager.AddToRolesAsync(adminUser, rolesToAdd);

                if (!result.Succeeded)
                {
                    throw new Exception(string.Join(',', result.Errors.Select(e => e.Description)));
                }
            }
            catch (Exception ex)
            {
                MessageService.PrintErrorAssignAllRolesToUser(ex);
            }
        }
コード例 #4
0
ファイル: UserApiController.cs プロジェクト: xenonsin/GoNorth
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="userDbAccess">User Db Access</param>
 /// <param name="userCreator">User Creator</param>
 /// <param name="userManager">User Manager</param>
 /// <param name="timelineService">Timeline Service</param>
 /// <param name="logger">Logger</param>
 /// <param name="localizerFactory">Localizer Factory</param>
 public UserApiController(IUserDbAccess userDbAccess, IUserCreator userCreator, UserManager <GoNorthUser> userManager, ITimelineService timelineService,
                          ILogger <UserApiController> logger, IStringLocalizerFactory localizerFactory)
 {
     _userDbAccess    = userDbAccess;
     _userCreator     = userCreator;
     _userManager     = userManager;
     _timelineService = timelineService;
     _logger          = logger;
     _localizer       = localizerFactory.Create(typeof(UserApiController));
 }
コード例 #5
0
        /// <summary>
        /// Removes the unused roles for the users
        /// </summary>
        /// <param name="userDbAccess">Usser Db Access</param>
        /// <returns>Task</returns>
        private async Task RemoveUnusedRolesForUsers(IUserDbAccess userDbAccess)
        {
            List <string>       existingRoles = RoleNames.GetAllRoleNames();
            IList <GoNorthUser> users         = await userDbAccess.GetUsers(0, int.MaxValue);

            foreach (GoNorthUser curUser in users)
            {
                IEnumerable <string> deletedRoles = curUser.Roles.Except(existingRoles);
                if (deletedRoles != null && deletedRoles.Any())
                {
                    GoNorthUser user = await userDbAccess.GetUserById(curUser.Id);

                    user.Roles = curUser.Roles.Except(deletedRoles).ToList();
                    await userDbAccess.UpdateUser(user);
                }
            }
        }
コード例 #6
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="userDbAccess">User Db Access</param>
 /// <param name="logger">Logger</param>
 public UtilApiController(IUserDbAccess userDbAccess, ILogger <UtilApiController> logger)
 {
     _userDbAccess = userDbAccess;
     _logger       = logger;
 }
コード例 #7
0
 public UserService(IUserDbAccess dbAccess, JWTOptions jwtOptions)
 {
     this.dbAccess   = dbAccess;
     this.jwtOptions = jwtOptions;
 }
コード例 #8
0
 public UserService(IUserDbAccess dbAccess, IOptions <JWTOptions> jwtOptions) : this(dbAccess, jwtOptions.Value)
 {
 }
コード例 #9
0
ファイル: GoNorthUserStore.cs プロジェクト: xenonsin/GoNorth
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="userDbAccess">User Database Access</param>
 public GoNorthUserStore(IUserDbAccess userDbAccess)
 {
     _UserDbAccess = userDbAccess;
 }
コード例 #10
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="userDbAccess">User Database Access</param>
 /// <param name="userPreferencesDbAccess">User Preferences Database Access</param>
 public GoNorthUserStore(IUserDbAccess userDbAccess, IUserPreferencesDbAccess userPreferencesDbAccess)
 {
     _UserDbAccess            = userDbAccess;
     _UserPreferencesDbAccess = userPreferencesDbAccess;
 }
コード例 #11
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="dbSetup">Database setup</param>
 /// <param name="userDbAccess">User database access</param>
 /// <param name="logger">Logger</param>
 public AutoDataMigrator(IDbSetup dbSetup, IUserDbAccess userDbAccess, ILogger <AutoDataMigrator> logger)
 {
     _dbSetup      = dbSetup;
     _userDbAccess = userDbAccess;
     _logger       = logger;
 }