using System.Threading.Tasks; using API.Constants; using API.Entities; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Logging; namespace API.Data.ManualMigrations; /// /// New role introduced in v0.6. Adds the role to all users. /// public static class MigrateChangeRestrictionRoles { /// /// Will not run if any users have the role already /// /// /// /// public static async Task Migrate(IUnitOfWork unitOfWork, UserManager userManager, ILogger logger) { var usersWithRole = await userManager.GetUsersInRoleAsync(PolicyConstants.ChangeRestrictionRole); if (usersWithRole.Count != 0) return; logger.LogCritical("Running MigrateChangeRestrictionRoles migration"); var allUsers = await unitOfWork.UserRepository.GetAllUsersAsync(); foreach (var user in allUsers) { await userManager.RemoveFromRoleAsync(user, PolicyConstants.ChangeRestrictionRole); await userManager.AddToRoleAsync(user, PolicyConstants.ChangeRestrictionRole); } logger.LogInformation("MigrateChangeRestrictionRoles migration complete"); } }