1
0
mirror of https://github.com/bitwarden/server.git synced 2025-05-21 11:34:31 -05:00

admin base uri setting, applied to login emails

This commit is contained in:
Kyle Spearrin 2018-04-16 20:35:53 -04:00
parent 795cf8e20e
commit dead022e83
31 changed files with 59 additions and 119 deletions

View File

@ -38,8 +38,7 @@ namespace Bit.Admin.Controllers
{ {
if(ModelState.IsValid) if(ModelState.IsValid)
{ {
await _signInManager.PasswordlessSignInAsync(model.Email, await _signInManager.PasswordlessSignInAsync(model.Email, model.ReturnUrl);
Url.Action("Confirm", "Login", new { returnUrl = model.ReturnUrl }, Request.Scheme));
return RedirectToAction("Index", new return RedirectToAction("Index", new
{ {
success = "If a valid admin user with this email address exists, " + success = "If a valid admin user with this email address exists, " +

View File

@ -4,6 +4,8 @@
"vault": "https://vault.bitwarden.com", "vault": "https://vault.bitwarden.com",
"api": "https://api.bitwarden.com", "api": "https://api.bitwarden.com",
"identity": "https://identity.bitwarden.com", "identity": "https://identity.bitwarden.com",
"admin": "https://admin.bitwarden.com",
"internalAdmin": "https://admin.bitwarden.com",
"internalIdentity": "https://identity.bitwarden.com", "internalIdentity": "https://identity.bitwarden.com",
"internalApi": "https://api.bitwarden.com", "internalApi": "https://api.bitwarden.com",
"internalVault": "https://vault.bitwarden.com" "internalVault": "https://vault.bitwarden.com"

View File

@ -8,6 +8,8 @@
"vault": "http://localhost:4001", "vault": "http://localhost:4001",
"api": "http://localhost:4000", "api": "http://localhost:4000",
"identity": "http://localhost:33656", "identity": "http://localhost:33656",
"admin": "http://localhost:62911",
"internalAdmin": "http://localhost:62911",
"internalIdentity": "http://localhost:33656", "internalIdentity": "http://localhost:33656",
"internalApi": "http://localhost:4000", "internalApi": "http://localhost:4000",
"internalVault": "http://localhost:4001" "internalVault": "http://localhost:4001"

View File

@ -1,12 +0,0 @@
{
"globalSettings": {
"baseServiceUri": {
"vault": "https://preview-vault.bitwarden.com",
"api": "https://preview-api.bitwarden.com",
"identity": "https://preview-identity.bitwarden.com",
"internalIdentity": "https://preview-identity.bitwarden.com",
"internalApi": "https://preview-api.bitwarden.com",
"internalVault": "https://preview-vault.bitwarden.com"
}
}
}

View File

@ -4,6 +4,8 @@
"vault": "https://vault.bitwarden.com", "vault": "https://vault.bitwarden.com",
"api": "https://api.bitwarden.com", "api": "https://api.bitwarden.com",
"identity": "https://identity.bitwarden.com", "identity": "https://identity.bitwarden.com",
"admin": "https://admin.bitwarden.com",
"internalAdmin": "https://admin.bitwarden.com",
"internalIdentity": "https://identity.bitwarden.com", "internalIdentity": "https://identity.bitwarden.com",
"internalApi": "https://api.bitwarden.com", "internalApi": "https://api.bitwarden.com",
"internalVault": "https://vault.bitwarden.com" "internalVault": "https://vault.bitwarden.com"

View File

@ -1,12 +0,0 @@
{
"globalSettings": {
"baseServiceUri": {
"vault": "https://vault.bitwarden.com",
"api": "https://api.bitwarden.com",
"identity": "https://identity.bitwarden.com",
"internalIdentity": "https://identity.bitwarden.com",
"internalApi": "https://api.bitwarden.com",
"internalVault": "https://vault.bitwarden.com"
}
}
}

View File

@ -8,6 +8,8 @@
"vault": "http://localhost:4001", "vault": "http://localhost:4001",
"api": "http://localhost:4000", "api": "http://localhost:4000",
"identity": "http://localhost:33656", "identity": "http://localhost:33656",
"admin": "http://localhost:62911",
"internalAdmin": "http://localhost:62911",
"internalIdentity": "http://localhost:33656", "internalIdentity": "http://localhost:33656",
"internalApi": "http://localhost:4000", "internalApi": "http://localhost:4000",
"internalVault": "http://localhost:4001" "internalVault": "http://localhost:4001"

View File

@ -4,6 +4,8 @@
"vault": "https://vault.bitwarden.com", "vault": "https://vault.bitwarden.com",
"api": "https://api.bitwarden.com", "api": "https://api.bitwarden.com",
"identity": "https://identity.bitwarden.com", "identity": "https://identity.bitwarden.com",
"admin": "https://admin.bitwarden.com",
"internalAdmin": "https://admin.bitwarden.com",
"internalIdentity": "https://identity.bitwarden.com" "internalIdentity": "https://identity.bitwarden.com"
}, },
"braintree": { "braintree": {

View File

@ -8,6 +8,8 @@
"vault": "http://localhost:4001", "vault": "http://localhost:4001",
"api": "http://localhost:4000", "api": "http://localhost:4000",
"identity": "http://localhost:33656", "identity": "http://localhost:33656",
"admin": "http://localhost:62911",
"internalAdmin": "http://localhost:62911",
"internalIdentity": "http://localhost:33656", "internalIdentity": "http://localhost:33656",
"internalApi": "http://localhost:4000", "internalApi": "http://localhost:4000",
"internalVault": "http://localhost:4001" "internalVault": "http://localhost:4001"

View File

@ -34,6 +34,8 @@ namespace Bit.Core
public string VaultWithHash => $"{Vault}/#"; public string VaultWithHash => $"{Vault}/#";
public string Api { get; set; } public string Api { get; set; }
public string Identity { get; set; } public string Identity { get; set; }
public string Admin { get; set; }
public string InternalAdmin { get; set; }
public string InternalIdentity { get; set; } public string InternalIdentity { get; set; }
public string InternalApi { get; set; } public string InternalApi { get; set; }
public string InternalVault { get; set; } public string InternalVault { get; set; }

View File

@ -28,7 +28,7 @@ namespace Bit.Core.Identity
_mailService = mailService; _mailService = mailService;
} }
public async Task<SignInResult> PasswordlessSignInAsync(string email, string loginConfirmUrl) public async Task<SignInResult> PasswordlessSignInAsync(string email, string returnUrl)
{ {
var user = await UserManager.FindByEmailAsync(email); var user = await UserManager.FindByEmailAsync(email);
if(user == null) if(user == null)
@ -38,7 +38,7 @@ namespace Bit.Core.Identity
var token = await UserManager.GenerateUserTokenAsync(user, Options.Tokens.PasswordResetTokenProvider, var token = await UserManager.GenerateUserTokenAsync(user, Options.Tokens.PasswordResetTokenProvider,
PasswordlessSignInPurpose); PasswordlessSignInPurpose);
await _mailService.SendPasswordlessSignInAsync(loginConfirmUrl, token, email); await _mailService.SendPasswordlessSignInAsync(returnUrl, token, email);
return SignInResult.Success; return SignInResult.Success;
} }

View File

@ -18,6 +18,6 @@ namespace Bit.Core.Services
Task SendOrganizationInviteEmailAsync(string organizationName, OrganizationUser orgUser, string token); Task SendOrganizationInviteEmailAsync(string organizationName, OrganizationUser orgUser, string token);
Task SendOrganizationAcceptedEmailAsync(string organizationName, string userEmail, IEnumerable<string> adminEmails); Task SendOrganizationAcceptedEmailAsync(string organizationName, string userEmail, IEnumerable<string> adminEmails);
Task SendOrganizationConfirmedEmailAsync(string organizationName, string email); Task SendOrganizationConfirmedEmailAsync(string organizationName, string email);
Task SendPasswordlessSignInAsync(string baseUrl, string token, string email); Task SendPasswordlessSignInAsync(string returnUrl, string token, string email);
} }
} }

View File

@ -153,16 +153,16 @@ namespace Bit.Core.Services
} }
} }
public async Task SendPasswordlessSignInAsync(string baseUrl, string token, string email) public async Task SendPasswordlessSignInAsync(string returnUrl, string token, string email)
{ {
try try
{ {
await _primaryMailService.SendPasswordlessSignInAsync(baseUrl, token, email); await _primaryMailService.SendPasswordlessSignInAsync(returnUrl, token, email);
} }
catch(Exception e) catch(Exception e)
{ {
LogError(e); LogError(e);
await _backupMailService.SendPasswordlessSignInAsync(baseUrl, token, email); await _backupMailService.SendPasswordlessSignInAsync(returnUrl, token, email);
} }
} }

View File

@ -171,19 +171,21 @@ namespace Bit.Core.Services
await _mailDeliveryService.SendEmailAsync(message); await _mailDeliveryService.SendEmailAsync(message);
} }
public async Task SendPasswordlessSignInAsync(string baseUrl, string token, string email) public async Task SendPasswordlessSignInAsync(string returnUrl, string token, string email)
{ {
var url = CoreHelpers.ExtendQuery(new Uri(baseUrl), new Dictionary<string, string> var url = CoreHelpers.ExtendQuery(new Uri($"{_globalSettings.BaseServiceUri.Admin}/login/confirm"),
{ new Dictionary<string, string>
["email"] = email, {
["token"] = token, ["returnUrl"] = returnUrl,
}); ["email"] = email,
["token"] = token,
});
var model = new Dictionary<string, string> var model = new Dictionary<string, string>
{ {
["url"] = url.ToString() ["url"] = url.ToString()
}; };
var message = await CreateMessageAsync("Continue Logging In", email, "PasswordlessSignIn", model); var message = await CreateMessageAsync("[Admin] Continue Logging In", email, "PasswordlessSignIn", model);
message.MetaData.Add("SendGridBypassListManagement", true); message.MetaData.Add("SendGridBypassListManagement", true);
await _mailDeliveryService.SendEmailAsync(message); await _mailDeliveryService.SendEmailAsync(message);
} }

View File

@ -203,15 +203,17 @@ namespace Bit.Core.Services
await _mailDeliveryService.SendEmailAsync(message); await _mailDeliveryService.SendEmailAsync(message);
} }
public async Task SendPasswordlessSignInAsync(string baseUrl, string token, string email) public async Task SendPasswordlessSignInAsync(string returnUrl, string token, string email)
{ {
var message = CreateDefaultMessage("Continue Logging In", email); var message = CreateDefaultMessage("[Admin] Continue Logging In", email);
var url = CoreHelpers.ExtendQuery(new Uri(baseUrl), new Dictionary<string, string> var url = CoreHelpers.ExtendQuery(new Uri($"{_globalSettings.BaseServiceUri.Admin}/login/confirm"),
{ new Dictionary<string, string>
["email"] = email, {
["token"] = token, ["returnUrl"] = returnUrl,
}); ["email"] = email,
["token"] = token,
});
var model = new PasswordlessSignInModel var model = new PasswordlessSignInModel
{ {
Url = url.ToString() Url = url.ToString()

View File

@ -62,7 +62,7 @@ namespace Bit.Core.Services
return Task.FromResult(0); return Task.FromResult(0);
} }
public Task SendPasswordlessSignInAsync(string baseUrl, string token, string email) public Task SendPasswordlessSignInAsync(string returnUrl, string token, string email)
{ {
return Task.FromResult(0); return Task.FromResult(0);
} }

View File

@ -1,12 +0,0 @@
{
"globalSettings": {
"baseServiceUri": {
"vault": "https://preview-vault.bitwarden.com",
"api": "https://preview-api.bitwarden.com",
"identity": "https://preview-identity.bitwarden.com",
"internalIdentity": "https://preview-identity.bitwarden.com",
"internalApi": "https://preview-api.bitwarden.com",
"internalVault": "https://preview-vault.bitwarden.com"
}
}
}

View File

@ -4,6 +4,8 @@
"vault": "https://vault.bitwarden.com", "vault": "https://vault.bitwarden.com",
"api": "https://api.bitwarden.com", "api": "https://api.bitwarden.com",
"identity": "https://identity.bitwarden.com", "identity": "https://identity.bitwarden.com",
"admin": "https://admin.bitwarden.com",
"internalAdmin": "https://admin.bitwarden.com",
"internalIdentity": "https://identity.bitwarden.com", "internalIdentity": "https://identity.bitwarden.com",
"internalApi": "https://api.bitwarden.com", "internalApi": "https://api.bitwarden.com",
"internalVault": "https://vault.bitwarden.com" "internalVault": "https://vault.bitwarden.com"

View File

@ -1,12 +0,0 @@
{
"globalSettings": {
"baseServiceUri": {
"vault": "https://vault.bitwarden.com",
"api": "https://api.bitwarden.com",
"identity": "https://identity.bitwarden.com",
"internalIdentity": "https://identity.bitwarden.com",
"internalApi": "https://api.bitwarden.com",
"internalVault": "https://vault.bitwarden.com"
}
}
}

View File

@ -6,6 +6,8 @@
"vault": "http://localhost:4001", "vault": "http://localhost:4001",
"api": "http://localhost:4000", "api": "http://localhost:4000",
"identity": "http://localhost:33656", "identity": "http://localhost:33656",
"admin": "http://localhost:62911",
"internalAdmin": "http://localhost:62911",
"internalIdentity": "http://localhost:33656", "internalIdentity": "http://localhost:33656",
"internalApi": "http://localhost:4000", "internalApi": "http://localhost:4000",
"internalVault": "http://localhost:4001" "internalVault": "http://localhost:4001"

View File

@ -1,12 +0,0 @@
{
"globalSettings": {
"baseServiceUri": {
"vault": "https://preview-vault.bitwarden.com",
"api": "https://preview-api.bitwarden.com",
"identity": "https://preview-identity.bitwarden.com",
"internalIdentity": "https://preview-identity.bitwarden.com",
"internalApi": "https://preview-api.bitwarden.com",
"internalVault": "https://preview-vault.bitwarden.com"
}
}
}

View File

@ -4,6 +4,8 @@
"vault": "https://vault.bitwarden.com", "vault": "https://vault.bitwarden.com",
"api": "https://api.bitwarden.com", "api": "https://api.bitwarden.com",
"identity": "https://identity.bitwarden.com", "identity": "https://identity.bitwarden.com",
"admin": "https://admin.bitwarden.com",
"internalAdmin": "https://admin.bitwarden.com",
"internalIdentity": "https://identity.bitwarden.com", "internalIdentity": "https://identity.bitwarden.com",
"internalApi": "https://api.bitwarden.com", "internalApi": "https://api.bitwarden.com",
"internalVault": "https://vault.bitwarden.com" "internalVault": "https://vault.bitwarden.com"

View File

@ -1,12 +0,0 @@
{
"globalSettings": {
"baseServiceUri": {
"vault": "https://vault.bitwarden.com",
"api": "https://api.bitwarden.com",
"identity": "https://identity.bitwarden.com",
"internalIdentity": "https://identity.bitwarden.com",
"internalApi": "https://api.bitwarden.com",
"internalVault": "https://vault.bitwarden.com"
}
}
}

View File

@ -8,6 +8,8 @@
"vault": "http://localhost:4001", "vault": "http://localhost:4001",
"api": "http://localhost:4000", "api": "http://localhost:4000",
"identity": "http://localhost:33656", "identity": "http://localhost:33656",
"admin": "http://localhost:62911",
"internalAdmin": "http://localhost:62911",
"internalIdentity": "http://localhost:33656", "internalIdentity": "http://localhost:33656",
"internalApi": "http://localhost:4000", "internalApi": "http://localhost:4000",
"internalVault": "http://localhost:4001" "internalVault": "http://localhost:4001"

View File

@ -1,12 +0,0 @@
{
"globalSettings": {
"baseServiceUri": {
"vault": "https://preview-vault.bitwarden.com",
"api": "https://preview-api.bitwarden.com",
"identity": "https://preview-identity.bitwarden.com",
"internalIdentity": "https://preview-identity.bitwarden.com",
"internalApi": "https://preview-api.bitwarden.com",
"internalVault": "https://preview-vault.bitwarden.com"
}
}
}

View File

@ -4,6 +4,8 @@
"vault": "https://vault.bitwarden.com", "vault": "https://vault.bitwarden.com",
"api": "https://api.bitwarden.com", "api": "https://api.bitwarden.com",
"identity": "https://identity.bitwarden.com", "identity": "https://identity.bitwarden.com",
"admin": "https://admin.bitwarden.com",
"internalAdmin": "https://admin.bitwarden.com",
"internalIdentity": "https://identity.bitwarden.com", "internalIdentity": "https://identity.bitwarden.com",
"internalApi": "https://api.bitwarden.com", "internalApi": "https://api.bitwarden.com",
"internalVault": "https://vault.bitwarden.com" "internalVault": "https://vault.bitwarden.com"

View File

@ -1,12 +0,0 @@
{
"globalSettings": {
"baseServiceUri": {
"vault": "https://vault.bitwarden.com",
"api": "https://api.bitwarden.com",
"identity": "https://identity.bitwarden.com",
"internalIdentity": "https://identity.bitwarden.com",
"internalApi": "https://api.bitwarden.com",
"internalVault": "https://vault.bitwarden.com"
}
}
}

View File

@ -8,6 +8,8 @@
"vault": "http://localhost:4001", "vault": "http://localhost:4001",
"api": "http://localhost:4000", "api": "http://localhost:4000",
"identity": "http://localhost:33656", "identity": "http://localhost:33656",
"admin": "http://localhost:62911",
"internalAdmin": "http://localhost:62911",
"internalIdentity": "http://localhost:33656", "internalIdentity": "http://localhost:33656",
"internalApi": "http://localhost:4000", "internalApi": "http://localhost:4000",
"internalVault": "http://localhost:4001" "internalVault": "http://localhost:4001"

View File

@ -4,6 +4,8 @@
"vault": "https://vault.bitwarden.com", "vault": "https://vault.bitwarden.com",
"api": "https://api.bitwarden.com", "api": "https://api.bitwarden.com",
"identity": "https://identity.bitwarden.com", "identity": "https://identity.bitwarden.com",
"admin": "https://admin.bitwarden.com",
"internalAdmin": "https://admin.bitwarden.com",
"internalIdentity": "https://identity.bitwarden.com", "internalIdentity": "https://identity.bitwarden.com",
"internalApi": "https://api.bitwarden.com", "internalApi": "https://api.bitwarden.com",
"internalVault": "https://vault.bitwarden.com" "internalVault": "https://vault.bitwarden.com"

View File

@ -8,6 +8,8 @@
"vault": "http://localhost:4001", "vault": "http://localhost:4001",
"api": "http://localhost:4000", "api": "http://localhost:4000",
"identity": "http://localhost:33656", "identity": "http://localhost:33656",
"admin": "http://localhost:62911",
"internalAdmin": "http://localhost:62911",
"internalIdentity": "http://localhost:33656", "internalIdentity": "http://localhost:33656",
"internalApi": "http://localhost:4000", "internalApi": "http://localhost:4000",
"internalVault": "http://localhost:4001" "internalVault": "http://localhost:4001"

View File

@ -41,6 +41,7 @@ namespace Bit.Setup
["globalSettings__baseServiceUri__vault"] = Url, ["globalSettings__baseServiceUri__vault"] = Url,
["globalSettings__baseServiceUri__api"] = $"{Url}/api", ["globalSettings__baseServiceUri__api"] = $"{Url}/api",
["globalSettings__baseServiceUri__identity"] = $"{Url}/identity", ["globalSettings__baseServiceUri__identity"] = $"{Url}/identity",
["globalSettings__baseServiceUri__admin"] = $"{Url}/admin",
["globalSettings__sqlServer__connectionString"] = $"\"{ dbConnectionString }\"", ["globalSettings__sqlServer__connectionString"] = $"\"{ dbConnectionString }\"",
["globalSettings__identityServer__certificatePassword"] = IdentityCertPassword, ["globalSettings__identityServer__certificatePassword"] = IdentityCertPassword,
["globalSettings__attachment__baseDirectory"] = $"{OutputDirectory}/core/attachments", ["globalSettings__attachment__baseDirectory"] = $"{OutputDirectory}/core/attachments",
@ -126,6 +127,8 @@ globalSettings__selfHosted=true
globalSettings__baseServiceUri__vault=http://localhost globalSettings__baseServiceUri__vault=http://localhost
globalSettings__baseServiceUri__api=http://localhost/api globalSettings__baseServiceUri__api=http://localhost/api
globalSettings__baseServiceUri__identity=http://localhost/identity globalSettings__baseServiceUri__identity=http://localhost/identity
globalSettings__baseServiceUri__admin=http://localhost/admin
globalSettings__baseServiceUri__internalAdmin=http://admin:5000
globalSettings__baseServiceUri__internalIdentity=http://identity:5000 globalSettings__baseServiceUri__internalIdentity=http://identity:5000
globalSettings__baseServiceUri__internalApi=http://api:5000 globalSettings__baseServiceUri__internalApi=http://api:5000
globalSettings__baseServiceUri__internalVault=http://web:5000 globalSettings__baseServiceUri__internalVault=http://web:5000