2026-02-24 20:44:16 +00:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using Sozsoft.Platform.Extensions;
|
|
|
|
|
|
using Microsoft.AspNetCore.Identity;
|
|
|
|
|
|
using Microsoft.Extensions.Options;
|
|
|
|
|
|
using Volo.Abp;
|
|
|
|
|
|
using Volo.Abp.DependencyInjection;
|
|
|
|
|
|
using Volo.Abp.Guids;
|
|
|
|
|
|
using Volo.Abp.Identity;
|
|
|
|
|
|
using Volo.Abp.MultiTenancy;
|
|
|
|
|
|
using Volo.Abp.PermissionManagement;
|
|
|
|
|
|
using IdentityRole = Volo.Abp.Identity.IdentityRole;
|
|
|
|
|
|
using IdentityUser = Volo.Abp.Identity.IdentityUser;
|
2026-05-04 12:14:16 +00:00
|
|
|
|
using Volo.Abp.Domain.Repositories;
|
|
|
|
|
|
using Sozsoft.Platform.Entities;
|
2026-02-24 20:44:16 +00:00
|
|
|
|
|
|
|
|
|
|
namespace Sozsoft.Platform.Data.Seeds;
|
|
|
|
|
|
|
|
|
|
|
|
[Dependency(ReplaceServices = true)]
|
|
|
|
|
|
public class PlatformIdentityDataSeeder : IdentityDataSeeder
|
|
|
|
|
|
{
|
|
|
|
|
|
private readonly IPermissionGrantRepository permissionGrantRepository;
|
2026-05-04 12:14:16 +00:00
|
|
|
|
private readonly IRepository<Branch, Guid> _branchRepository;
|
|
|
|
|
|
private readonly IRepository<BranchUsers, Guid> _branchUsersRepository;
|
2026-02-24 20:44:16 +00:00
|
|
|
|
|
|
|
|
|
|
public PlatformIdentityDataSeeder(
|
|
|
|
|
|
IGuidGenerator guidGenerator,
|
|
|
|
|
|
IIdentityRoleRepository roleRepository,
|
|
|
|
|
|
IIdentityUserRepository userRepository,
|
2026-05-04 12:14:16 +00:00
|
|
|
|
IRepository<Branch, Guid> branchRepository,
|
|
|
|
|
|
IRepository<BranchUsers, Guid> branchUsersRepository,
|
2026-02-24 20:44:16 +00:00
|
|
|
|
ILookupNormalizer lookupNormalizer,
|
|
|
|
|
|
IdentityUserManager userManager,
|
|
|
|
|
|
IdentityRoleManager roleManager,
|
|
|
|
|
|
IPermissionGrantRepository permissionGrantRepository,
|
|
|
|
|
|
ICurrentTenant currentTenant,
|
|
|
|
|
|
IOptions<IdentityOptions> identityOptions
|
|
|
|
|
|
) : base(guidGenerator, roleRepository, userRepository, lookupNormalizer, userManager, roleManager, currentTenant, identityOptions)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.permissionGrantRepository = permissionGrantRepository;
|
2026-05-04 12:14:16 +00:00
|
|
|
|
this._branchRepository = branchRepository;
|
|
|
|
|
|
this._branchUsersRepository = branchUsersRepository;
|
2026-02-24 20:44:16 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override async Task<IdentityDataSeedResult> SeedAsync(string adminEmail, string adminPassword, Guid? tenantId = null, string adminUserName = null)
|
|
|
|
|
|
{
|
|
|
|
|
|
Check.NotNullOrWhiteSpace(adminEmail, nameof(adminEmail));
|
|
|
|
|
|
Check.NotNullOrWhiteSpace(adminPassword, nameof(adminPassword));
|
|
|
|
|
|
|
|
|
|
|
|
using (CurrentTenant.Change(tenantId))
|
|
|
|
|
|
{
|
|
|
|
|
|
await IdentityOptions.SetAsync();
|
|
|
|
|
|
|
|
|
|
|
|
var result = new IdentityDataSeedResult();
|
|
|
|
|
|
|
2026-05-04 12:14:16 +00:00
|
|
|
|
var branchId = GuidGenerator.Create();
|
|
|
|
|
|
var defaultBranch = await _branchRepository.FirstOrDefaultAsync(b => b.Code == PlatformConsts.Branches.BranchCode);
|
|
|
|
|
|
if (defaultBranch == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
await _branchRepository.InsertAsync(new Branch(branchId)
|
|
|
|
|
|
{
|
|
|
|
|
|
Code = PlatformConsts.Branches.BranchCode,
|
|
|
|
|
|
Name = PlatformConsts.Branches.BranchName,
|
|
|
|
|
|
VknTckn = PlatformConsts.Branches.BranchVknTckn,
|
|
|
|
|
|
TaxOffice = PlatformConsts.Branches.BranchTaxOffice,
|
|
|
|
|
|
MobileNumber = PlatformConsts.Branches.BranchMobileNumber,
|
|
|
|
|
|
Country = PlatformConsts.Branches.BranchCountry,
|
|
|
|
|
|
City = PlatformConsts.Branches.BranchCity,
|
|
|
|
|
|
District = PlatformConsts.Branches.BranchDistrict,
|
|
|
|
|
|
Township = PlatformConsts.Branches.BranchTownship,
|
|
|
|
|
|
Email = PlatformConsts.Branches.BranchEmail,
|
|
|
|
|
|
Website = PlatformConsts.Branches.BranchWebsite,
|
|
|
|
|
|
IsActive = PlatformConsts.Branches.BranchIsActive,
|
|
|
|
|
|
TenantId = tenantId,
|
2026-05-26 16:49:46 +00:00
|
|
|
|
}, autoSave: true);
|
2026-05-04 12:14:16 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-24 20:44:16 +00:00
|
|
|
|
var adminRole = await RoleRepository.FindByNormalizedNameAsync(LookupNormalizer.NormalizeName(PlatformConsts.AbpIdentity.User.AdminRoleName));
|
|
|
|
|
|
if (adminRole is null)
|
|
|
|
|
|
{
|
2026-05-04 12:14:16 +00:00
|
|
|
|
var roleId = GuidGenerator.Create();
|
2026-02-24 20:44:16 +00:00
|
|
|
|
adminRole = new IdentityRole(
|
2026-05-04 12:14:16 +00:00
|
|
|
|
roleId,
|
2026-02-24 20:44:16 +00:00
|
|
|
|
PlatformConsts.AbpIdentity.User.AdminRoleName,
|
|
|
|
|
|
tenantId
|
|
|
|
|
|
)
|
|
|
|
|
|
{
|
|
|
|
|
|
IsStatic = true,
|
|
|
|
|
|
IsPublic = true
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
(await RoleManager.CreateAsync(adminRole)).CheckErrors();
|
|
|
|
|
|
result.CreatedAdminRole = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
adminUserName ??= PlatformConsts.AbpIdentity.User.AdminEmailDefaultValue;
|
|
|
|
|
|
var adminUser = await UserRepository.FindByNormalizedUserNameAsync(
|
|
|
|
|
|
LookupNormalizer.NormalizeName(adminUserName)
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
if (adminUser is null)
|
|
|
|
|
|
{
|
2026-05-04 12:14:16 +00:00
|
|
|
|
var userId = GuidGenerator.Create();
|
2026-02-24 20:44:16 +00:00
|
|
|
|
adminUser = new IdentityUser(
|
2026-05-04 12:14:16 +00:00
|
|
|
|
userId,
|
2026-02-24 20:44:16 +00:00
|
|
|
|
adminUserName,
|
|
|
|
|
|
adminEmail,
|
|
|
|
|
|
tenantId
|
|
|
|
|
|
)
|
|
|
|
|
|
{
|
|
|
|
|
|
Name = PlatformConsts.AbpIdentity.User.AdminNameDefaultValue,
|
|
|
|
|
|
Surname = PlatformConsts.AbpIdentity.User.AdminSurNameDefaultValue,
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
adminUser.SetEmailConfirmed(true);
|
|
|
|
|
|
adminUser.SetIsVerified(true);
|
|
|
|
|
|
adminUser.SetRocketUsername(PlatformConsts.AbpIdentity.User.AdminRocketUsernameDefaultValue);
|
|
|
|
|
|
adminUser.SetPhoneNumber(PlatformConsts.AbpIdentity.User.AdminPhoneNumberDefaultValue, true);
|
2026-04-26 19:05:19 +00:00
|
|
|
|
adminUser.SetWorkHour(PlatformConsts.AbpIdentity.User.AdminWorkHourDefaultValue);
|
2026-05-14 14:46:38 +00:00
|
|
|
|
adminUser.SetNationality(PlatformConsts.AbpIdentity.User.AdminNationalityDefaultValue);
|
|
|
|
|
|
adminUser.SetBloodType(PlatformConsts.AbpIdentity.User.AdminBloodTypeDefaultValue);
|
|
|
|
|
|
adminUser.SetEducationLevel(PlatformConsts.AbpIdentity.User.AdminEducationLevelDefaultValue);
|
|
|
|
|
|
adminUser.SetGraduationSchool(PlatformConsts.AbpIdentity.User.AdminGraduationSchoolDefaultValue);
|
|
|
|
|
|
adminUser.SetHomeAddress(PlatformConsts.AbpIdentity.User.AdminHomeAddressDefaultValue);
|
|
|
|
|
|
adminUser.SetBirthDate(PlatformConsts.AbpIdentity.User.AdminBirthDateDefaultValue);
|
|
|
|
|
|
adminUser.SetBirthPlace(PlatformConsts.AbpIdentity.User.AdminBirthPlaceDefaultValue);
|
|
|
|
|
|
adminUser.SetMaritalStatus(PlatformConsts.AbpIdentity.User.AdminMaritalStatusDefaultValue);
|
|
|
|
|
|
|
2026-02-24 20:44:16 +00:00
|
|
|
|
(await UserManager.CreateAsync(adminUser, adminPassword, validatePassword: false)).CheckErrors();
|
|
|
|
|
|
result.CreatedAdminUser = true;
|
|
|
|
|
|
|
|
|
|
|
|
(await UserManager.AddToRoleAsync(adminUser, PlatformConsts.AbpIdentity.User.AdminRoleName)).CheckErrors();
|
2026-05-04 12:14:16 +00:00
|
|
|
|
|
|
|
|
|
|
//BranchUsers tablosuna admin kullanıcısı ekleniyor
|
|
|
|
|
|
var defaultBranchUsers = await _branchUsersRepository.FirstOrDefaultAsync(bu => bu.UserId == userId && bu.BranchId == branchId);
|
|
|
|
|
|
if (defaultBranchUsers is null)
|
|
|
|
|
|
{
|
|
|
|
|
|
await _branchUsersRepository.InsertAsync(new BranchUsers
|
|
|
|
|
|
{
|
|
|
|
|
|
BranchId = branchId,
|
|
|
|
|
|
UserId = userId,
|
|
|
|
|
|
TenantId = tenantId
|
2026-05-26 16:49:46 +00:00
|
|
|
|
}, autoSave: true);
|
2026-05-04 12:14:16 +00:00
|
|
|
|
}
|
2026-02-24 20:44:16 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*admin rolüne ait yetkiler otomatik atanıyor*/
|
|
|
|
|
|
var permissions = await permissionGrantRepository.GetListAsync("R", PlatformConsts.AbpIdentity.User.AdminRoleName);
|
|
|
|
|
|
if (permissions.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
await permissionGrantRepository.InsertManyAsync(
|
|
|
|
|
|
[
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Roles.Default, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Roles.Create, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Roles.Delete, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Roles.Update, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Roles.Default + ".Export", "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Roles.ManagePermissions, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Users.Default, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Users.Create, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Users.Delete, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Users.Update, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Users.ManagePermissions, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Users.Default + ".Export", "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.Users.ManageRoles, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
new(Guid.NewGuid(), IdentityPermissions.UserLookup.Default, "R", PlatformConsts.AbpIdentity.User.AdminRoleName, tenantId),
|
|
|
|
|
|
]);
|
|
|
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|