Skip to content

Commit 49c830a

Browse files
committed
#94: bsb admin implemented on account pages
1 parent c14d8fa commit 49c830a

File tree

84 files changed

+9439
-441
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+9439
-441
lines changed

src/AbpCompanyName.AbpProjectName.Application/AbpCompanyName.AbpProjectName.Application.csproj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,15 @@
126126
<ItemGroup>
127127
<Compile Include="AbpProjectNameApplicationModule.cs" />
128128
<Compile Include="AbpProjectNameAppServiceBase.cs" />
129+
<Compile Include="Authorization\Accounts\AccountAppService.cs" />
130+
<Compile Include="Authorization\Accounts\Dto\IsTenantAvailable.cs" />
131+
<Compile Include="Authorization\Accounts\Dto\IsTenantAvailableOutput.cs" />
132+
<Compile Include="Authorization\Accounts\Dto\RegisterInput.cs" />
133+
<Compile Include="Authorization\Accounts\Dto\RegisterOutput.cs" />
134+
<Compile Include="Authorization\Accounts\Dto\TenantAvailabilityState.cs" />
135+
<Compile Include="Authorization\Accounts\IAccountAppService.cs" />
136+
<Compile Include="Configuration\UiThemeInfo.cs" />
137+
<Compile Include="Configuration\UiThemes.cs" />
129138
<Compile Include="MultiTenancy\Dto\CreateTenantInput.cs" />
130139
<Compile Include="MultiTenancy\ITenantAppService.cs" />
131140
<Compile Include="MultiTenancy\Dto\TenantListDto.cs" />

src/AbpCompanyName.AbpProjectName.Application/AbpProjectNameAppServiceBase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Abp.Application.Services;
44
using Abp.IdentityFramework;
55
using Abp.Runtime.Session;
6+
using AbpCompanyName.AbpProjectName.Authorization.Users;
67
using AbpCompanyName.AbpProjectName.MultiTenancy;
78
using AbpCompanyName.AbpProjectName.Users;
89
using Microsoft.AspNet.Identity;
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
using System.Threading.Tasks;
2+
using Abp.Zero.Configuration;
3+
using AbpCompanyName.AbpProjectName.Authorization.Accounts.Dto;
4+
using AbpCompanyName.AbpProjectName.Authorization.Users;
5+
using Abp.Configuration;
6+
7+
8+
namespace AbpCompanyName.AbpProjectName.Authorization.Accounts
9+
{
10+
public class AccountAppService : AbpProjectNameAppServiceBase, IAccountAppService
11+
{
12+
private readonly UserRegistrationManager _userRegistrationManager;
13+
14+
public AccountAppService(
15+
UserRegistrationManager userRegistrationManager)
16+
{
17+
_userRegistrationManager = userRegistrationManager;
18+
}
19+
20+
public async Task<IsTenantAvailableOutput> IsTenantAvailable(IsTenantAvailableInput input)
21+
{
22+
var tenant = await TenantManager.FindByTenancyNameAsync(input.TenancyName);
23+
if (tenant == null)
24+
{
25+
return new IsTenantAvailableOutput(TenantAvailabilityState.NotFound);
26+
}
27+
28+
if (!tenant.IsActive)
29+
{
30+
return new IsTenantAvailableOutput(TenantAvailabilityState.InActive);
31+
}
32+
33+
return new IsTenantAvailableOutput(TenantAvailabilityState.Available, tenant.Id);
34+
}
35+
36+
public async Task<RegisterOutput> Register(RegisterInput input)
37+
{
38+
var user = await _userRegistrationManager.RegisterAsync(
39+
input.Name,
40+
input.Surname,
41+
input.EmailAddress,
42+
input.UserName,
43+
input.Password,
44+
false
45+
);
46+
47+
var isEmailConfirmationRequiredForLogin = await SettingManager.GetSettingValueAsync<bool>(AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin);
48+
49+
return new RegisterOutput
50+
{
51+
CanLogin = user.IsActive && (user.IsEmailConfirmed || !isEmailConfirmationRequiredForLogin)
52+
};
53+
}
54+
}
55+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System.ComponentModel.DataAnnotations;
2+
using Abp.MultiTenancy;
3+
4+
namespace AbpCompanyName.AbpProjectName.Authorization.Accounts.Dto
5+
{
6+
public class IsTenantAvailableInput
7+
{
8+
[Required]
9+
[MaxLength(AbpTenantBase.MaxTenancyNameLength)]
10+
public string TenancyName { get; set; }
11+
}
12+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
namespace AbpCompanyName.AbpProjectName.Authorization.Accounts.Dto
2+
{
3+
public class IsTenantAvailableOutput
4+
{
5+
public TenantAvailabilityState State { get; set; }
6+
7+
public int? TenantId { get; set; }
8+
9+
public IsTenantAvailableOutput()
10+
{
11+
12+
}
13+
14+
public IsTenantAvailableOutput(TenantAvailabilityState state, int? tenantId = null)
15+
{
16+
State = state;
17+
TenantId = tenantId;
18+
}
19+
}
20+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System.Collections.Generic;
2+
using System.ComponentModel.DataAnnotations;
3+
using Abp.Auditing;
4+
using Abp.Authorization.Users;
5+
using AbpCompanyName.AbpProjectName.Users;
6+
using AbpCompanyName.AbpProjectName.Validation;
7+
using Abp.Extensions;
8+
using AbpCompanyName.AbpProjectName.Authorization.Users;
9+
10+
namespace AbpCompanyName.AbpProjectName.Authorization.Accounts.Dto
11+
{
12+
public class RegisterInput : IValidatableObject
13+
{
14+
[Required]
15+
[StringLength(User.MaxNameLength)]
16+
public string Name { get; set; }
17+
18+
[Required]
19+
[StringLength(User.MaxSurnameLength)]
20+
public string Surname { get; set; }
21+
22+
[Required]
23+
[StringLength(AbpUserBase.MaxUserNameLength)]
24+
public string UserName { get; set; }
25+
26+
[Required]
27+
[EmailAddress]
28+
[StringLength(AbpUserBase.MaxEmailAddressLength)]
29+
public string EmailAddress { get; set; }
30+
31+
[Required]
32+
[StringLength(User.MaxPlainPasswordLength)]
33+
[DisableAuditing]
34+
public string Password { get; set; }
35+
36+
[DisableAuditing]
37+
public string CaptchaResponse { get; set; }
38+
39+
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
40+
{
41+
if (!UserName.IsNullOrEmpty())
42+
{
43+
if (!UserName.Equals(EmailAddress) && ValidationHelper.IsEmail(UserName))
44+
{
45+
yield return new ValidationResult("Username cannot be an email address unless it's same with your email address !");
46+
}
47+
}
48+
}
49+
}
50+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace AbpCompanyName.AbpProjectName.Authorization.Accounts.Dto
2+
{
3+
public class RegisterOutput
4+
{
5+
public bool CanLogin { get; set; }
6+
}
7+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace AbpCompanyName.AbpProjectName.Authorization.Accounts.Dto
2+
{
3+
public enum TenantAvailabilityState
4+
{
5+
Available = 1,
6+
InActive,
7+
NotFound
8+
}
9+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System.Threading.Tasks;
2+
using Abp.Application.Services;
3+
using AbpCompanyName.AbpProjectName.Authorization.Accounts.Dto;
4+
5+
namespace AbpCompanyName.AbpProjectName.Authorization.Accounts
6+
{
7+
public interface IAccountAppService : IApplicationService
8+
{
9+
Task<IsTenantAvailableOutput> IsTenantAvailable(IsTenantAvailableInput input);
10+
11+
Task<RegisterOutput> Register(RegisterInput input);
12+
}
13+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace AbpCompanyName.AbpProjectName.Configuration
2+
{
3+
public class UiThemeInfo
4+
{
5+
public string Name { get; }
6+
public string CssClass { get; }
7+
8+
public UiThemeInfo(string name, string cssClass)
9+
{
10+
Name = name;
11+
CssClass = cssClass;
12+
}
13+
}
14+
}

0 commit comments

Comments
 (0)