This repository has been archived on 2023-10-28. You can view files and clone it, but cannot push or open issues or pull requests.
pwt-0x01-ng/Models/Database/DBInit.cs
surtur 3de6d80f37
All checks were successful
continuous-integration/drone/push Build is passing
cleanup: remove unused usings throughout
2021-02-10 00:34:56 +01:00

122 lines
3.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Identity;
using pwt_0x01_ng.Models.Identity;
namespace pwt_0x01_ng.Models.Database
{
public static class DBInit
{
public static void Init(DBContext dbContext)
{
dbContext.Database.EnsureCreated();
if(dbContext.Carousel.Count() == 0){
IList<Carousel> carousels = CarouselHelper.GenerateCarousel();
foreach (var c in carousels)
{
dbContext.Carousel.Add(c);
}
dbContext.SaveChanges();
}
if(dbContext.Product.Count() == 0){
IList<Product> products = ProductHelper.GenerateProduct();
foreach (var p in products)
{
dbContext.Product.Add(p);
}
dbContext.SaveChanges();
}
}
public static async Task EnsureRolesCreated(IServiceProvider sp){
using (var services = sp.CreateScope()){
RoleManager<Role> role_manager = services.ServiceProvider.GetRequiredService<RoleManager<Role>>();
string[] rolespls = Enum.GetNames(typeof(Roles));
foreach (var role in rolespls){
Console.WriteLine(role + " => " + role.GetType());
await role_manager.CreateAsync(new Role(role));
}
}
}
public static async Task EnsureManagerCreated(IServiceProvider sp){
using (var services = sp.CreateScope()){
UserManager<User> usr_manager = services.ServiceProvider.GetRequiredService<UserManager<User>>();
User manager = new User(){
UserName = "manager",
Email = "manager@manager.com",
Name = "manager",
LastName = "",
EmailConfirmed = true
};
var super_secure_password = "123"; /* TODO - rm this */
User manager_in_db = await usr_manager.FindByNameAsync(manager.UserName);
if (manager_in_db == null){
IdentityResult ir = new IdentityResult();
try {
ir = await usr_manager.CreateAsync(manager, super_secure_password);
} catch (Exception e){
Debug.WriteLine(e);
}
if(ir.Succeeded){
string[] rolespls = Enum.GetNames(typeof(Roles));
foreach (var role in rolespls){
if(role != Roles.Admin.ToString()){
await usr_manager.AddToRoleAsync(manager, role);
}
}
} else if (ir.Errors != null && ir.Errors.Count() >0){
foreach (var err in ir.Errors){
Debug.WriteLine("Error during manager role creation" + err.Code + " => " + err.Description);
}
}
}
}
}
public static async Task EnsureAdminCreated(IServiceProvider sp){
using (var services = sp.CreateScope()){
UserManager<User> usr_manager = services.ServiceProvider.GetRequiredService<UserManager<User>>();
User admin = new User(){
UserName = "admin",
Email = "admin@admin.com",
Name = "admin",
LastName = "",
EmailConfirmed = true
};
var super_secure_password = "123"; /* TODO - rm this */
User admin_in_db = await usr_manager.FindByNameAsync(admin.UserName);
if (admin_in_db == null){
IdentityResult ir = new IdentityResult();
try {
ir = await usr_manager.CreateAsync(admin, super_secure_password);
} catch (Exception e){
Debug.WriteLine(e);
}
if(ir.Succeeded){
string[] rolespls = Enum.GetNames(typeof(Roles));
foreach (var role in rolespls){
await usr_manager.AddToRoleAsync(admin, role);
}
} else if (ir.Errors != null && ir.Errors.Count() >0){
foreach (var err in ir.Errors){
Debug.WriteLine("Error during admin role creation" + err.Code + " => " + err.Description);
}
}
}
}
}
}
}