mirror of
https://github.com/bitwarden/server.git
synced 2024-11-29 13:25:17 +01:00
verify email apis
This commit is contained in:
parent
d42a47e5f0
commit
87a216e523
@ -103,7 +103,7 @@ namespace Bit.Api.Controllers
|
|||||||
await Task.Delay(2000);
|
await Task.Delay(2000);
|
||||||
throw new BadRequestException(ModelState);
|
throw new BadRequestException(ModelState);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("verify-email")]
|
[HttpPost("verify-email")]
|
||||||
public async Task PostVerifyEmail()
|
public async Task PostVerifyEmail()
|
||||||
{
|
{
|
||||||
@ -118,14 +118,26 @@ namespace Bit.Api.Controllers
|
|||||||
|
|
||||||
[HttpPost("verify-email-token")]
|
[HttpPost("verify-email-token")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public async Task PostVerifyEmailToken()
|
public async Task PostVerifyEmailToken([FromBody]VerifyEmailRequestModel model)
|
||||||
{
|
{
|
||||||
var user = await _userService.GetUserByIdAsync(new Guid());
|
var user = await _userService.GetUserByIdAsync(new Guid(model.UserId));
|
||||||
if(user == null)
|
if(user == null)
|
||||||
{
|
{
|
||||||
throw new UnauthorizedAccessException();
|
throw new UnauthorizedAccessException();
|
||||||
}
|
}
|
||||||
await _userService.ConfirmEmailAsync(user, "");
|
var result = await _userService.ConfirmEmailAsync(user, model.Token);
|
||||||
|
if(result.Succeeded)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(var error in result.Errors)
|
||||||
|
{
|
||||||
|
ModelState.AddModelError(string.Empty, error.Description);
|
||||||
|
}
|
||||||
|
|
||||||
|
await Task.Delay(2000);
|
||||||
|
throw new BadRequestException(ModelState);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPut("password")]
|
[HttpPut("password")]
|
||||||
|
@ -205,7 +205,7 @@ namespace Bit.Api
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
//return $"http://localhost:{port}";
|
//return $"http://localhost:{port}";
|
||||||
return $"http://192.168.1.6:{port}"; // Desktop external
|
return $"http://192.168.1.4:{port}"; // Desktop external
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ namespace Bit.Core.Identity
|
|||||||
|
|
||||||
public Task<bool> GetEmailConfirmedAsync(User user, CancellationToken cancellationToken = default(CancellationToken))
|
public Task<bool> GetEmailConfirmedAsync(User user, CancellationToken cancellationToken = default(CancellationToken))
|
||||||
{
|
{
|
||||||
return Task.FromResult(true); // all emails are confirmed
|
return Task.FromResult(user.EmailVerified);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<string> GetNormalizedEmailAsync(User user, CancellationToken cancellationToken = default(CancellationToken))
|
public Task<string> GetNormalizedEmailAsync(User user, CancellationToken cancellationToken = default(CancellationToken))
|
||||||
@ -121,7 +121,7 @@ namespace Bit.Core.Identity
|
|||||||
|
|
||||||
public Task SetEmailConfirmedAsync(User user, bool confirmed, CancellationToken cancellationToken = default(CancellationToken))
|
public Task SetEmailConfirmedAsync(User user, bool confirmed, CancellationToken cancellationToken = default(CancellationToken))
|
||||||
{
|
{
|
||||||
// do nothing
|
user.EmailVerified = confirmed;
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace Bit.Core.Models.Api
|
||||||
|
{
|
||||||
|
public class VerifyEmailRequestModel
|
||||||
|
{
|
||||||
|
[Required]
|
||||||
|
public string UserId { get; set; }
|
||||||
|
[Required]
|
||||||
|
public string Token { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -35,7 +35,7 @@ namespace Bit.Core.Services
|
|||||||
var message = CreateDefaultMessage("Verify Your Email", email);
|
var message = CreateDefaultMessage("Verify Your Email", email);
|
||||||
var model = new VerifyEmailModel
|
var model = new VerifyEmailModel
|
||||||
{
|
{
|
||||||
Token = token,
|
Token = WebUtility.UrlEncode(token),
|
||||||
UserId = userId,
|
UserId = userId,
|
||||||
WebVaultUrl = _globalSettings.BaseVaultUri,
|
WebVaultUrl = _globalSettings.BaseVaultUri,
|
||||||
SiteName = _globalSettings.SiteName
|
SiteName = _globalSettings.SiteName
|
||||||
|
@ -294,7 +294,7 @@ namespace Bit.Core.Services
|
|||||||
{
|
{
|
||||||
if(user.EmailVerified)
|
if(user.EmailVerified)
|
||||||
{
|
{
|
||||||
throw new BadRequestException("Email already verifed.");
|
throw new BadRequestException("Email already verified.");
|
||||||
}
|
}
|
||||||
|
|
||||||
var token = await base.GenerateEmailConfirmationTokenAsync(user);
|
var token = await base.GenerateEmailConfirmationTokenAsync(user);
|
||||||
|
@ -103,6 +103,7 @@ namespace Bit.Core.Utilities
|
|||||||
identityBuilder
|
identityBuilder
|
||||||
.AddUserStore<UserStore>()
|
.AddUserStore<UserStore>()
|
||||||
.AddRoleStore<RoleStore>()
|
.AddRoleStore<RoleStore>()
|
||||||
|
.AddTokenProvider<DataProtectorTokenProvider<User>>(TokenOptions.DefaultProvider)
|
||||||
.AddTokenProvider<AuthenticatorTokenProvider>(TwoFactorProviderType.Authenticator.ToString())
|
.AddTokenProvider<AuthenticatorTokenProvider>(TwoFactorProviderType.Authenticator.ToString())
|
||||||
.AddTokenProvider<YubicoOtpTokenProvider>(TwoFactorProviderType.YubiKey.ToString())
|
.AddTokenProvider<YubicoOtpTokenProvider>(TwoFactorProviderType.YubiKey.ToString())
|
||||||
.AddTokenProvider<DuoWebTokenProvider>(TwoFactorProviderType.Duo.ToString())
|
.AddTokenProvider<DuoWebTokenProvider>(TwoFactorProviderType.Duo.ToString())
|
||||||
|
Loading…
Reference in New Issue
Block a user