2024-02-08 13:35:45 -05:00
|
|
|
@using Bit.Admin.Enums;
|
2024-12-11 11:09:12 +00:00
|
|
|
@using Bit.Core
|
2023-05-04 15:18:49 -04:00
|
|
|
|
|
|
|
|
@inject SignInManager<IdentityUser> SignInManager
|
2021-02-22 15:35:16 -06:00
|
|
|
@inject Bit.Core.Settings.GlobalSettings GlobalSettings
|
2023-05-04 15:18:49 -04:00
|
|
|
@inject Bit.Admin.Services.IAccessControlService AccessControlService
|
2024-12-11 11:09:12 +00:00
|
|
|
@inject Bit.Core.Services.IFeatureService FeatureService
|
2023-05-04 15:18:49 -04:00
|
|
|
|
|
|
|
|
@{
|
|
|
|
|
var canViewUsers = AccessControlService.UserHasPermission(Permission.User_List_View);
|
|
|
|
|
var canViewOrgs = AccessControlService.UserHasPermission(Permission.Org_List_View);
|
|
|
|
|
var canViewProviders = AccessControlService.UserHasPermission(Permission.Provider_List_View);
|
|
|
|
|
var canChargeBraintree = AccessControlService.UserHasPermission(Permission.Tools_ChargeBrainTreeCustomer);
|
|
|
|
|
var canCreateTransaction = AccessControlService.UserHasPermission(Permission.Tools_CreateEditTransaction);
|
|
|
|
|
var canPromoteAdmin = AccessControlService.UserHasPermission(Permission.Tools_PromoteAdmin);
|
2024-12-11 11:09:12 +00:00
|
|
|
var canPromoteProviderServiceUser = FeatureService.IsEnabled(FeatureFlagKeys.PromoteProviderServiceUserTool) &&
|
|
|
|
|
AccessControlService.UserHasPermission(Permission.Tools_PromoteProviderServiceUser);
|
2023-05-04 15:18:49 -04:00
|
|
|
var canGenerateLicense = AccessControlService.UserHasPermission(Permission.Tools_GenerateLicenseFile);
|
|
|
|
|
var canManageTaxRates = AccessControlService.UserHasPermission(Permission.Tools_ManageTaxRates);
|
|
|
|
|
var canManageStripeSubscriptions = AccessControlService.UserHasPermission(Permission.Tools_ManageStripeSubscriptions);
|
2024-09-26 09:18:21 -04:00
|
|
|
var canProcessStripeEvents = AccessControlService.UserHasPermission(Permission.Tools_ProcessStripeEvents);
|
2024-10-04 10:55:00 -04:00
|
|
|
var canMigrateProviders = AccessControlService.UserHasPermission(Permission.Tools_MigrateProviders);
|
2023-05-04 15:18:49 -04:00
|
|
|
|
2024-12-11 11:09:12 +00:00
|
|
|
var canViewTools = canChargeBraintree || canCreateTransaction || canPromoteAdmin || canPromoteProviderServiceUser ||
|
2023-05-04 15:18:49 -04:00
|
|
|
canGenerateLicense || canManageTaxRates || canManageStripeSubscriptions;
|
|
|
|
|
}
|
|
|
|
|
|
2018-03-23 10:12:09 -04:00
|
|
|
<!DOCTYPE html>
|
2018-03-21 12:57:43 -04:00
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="utf-8" />
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
2019-01-17 16:45:53 -05:00
|
|
|
<meta name="robots" content="noindex,nofollow" />
|
2018-03-21 12:57:43 -04:00
|
|
|
<title>@ViewData["Title"] - Bitwarden Admin Portal</title>
|
|
|
|
|
|
2024-07-31 21:41:55 +02:00
|
|
|
<link rel="stylesheet" href="~/assets/site.css" asp-append-version="true" />
|
2018-03-21 12:57:43 -04:00
|
|
|
</head>
|
|
|
|
|
<body>
|
2018-03-21 13:03:53 -04:00
|
|
|
<nav class="navbar navbar-expand-md navbar-dark bg-dark mb-4">
|
|
|
|
|
<div class="container">
|
2018-03-22 21:27:36 -04:00
|
|
|
<a class="navbar-brand" asp-controller="Home" asp-action="Index">
|
|
|
|
|
<i class="fa fa-lg fa-fw fa-shield"></i> Admin
|
|
|
|
|
</a>
|
2024-11-19 12:04:54 +00:00
|
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse"
|
2018-03-21 13:03:53 -04:00
|
|
|
aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
|
|
|
|
|
<span class="navbar-toggler-icon"></span>
|
|
|
|
|
</button>
|
|
|
|
|
<div class="collapse navbar-collapse" id="navbarCollapse">
|
2024-11-19 12:04:54 +00:00
|
|
|
<ul class="navbar-nav me-auto mb-2 mb-md-0">
|
2023-05-04 15:18:49 -04:00
|
|
|
@if (SignInManager.IsSignedIn(User))
|
2018-03-23 16:09:49 -04:00
|
|
|
{
|
2023-05-04 15:18:49 -04:00
|
|
|
@if (canViewUsers)
|
2018-03-29 23:30:56 -04:00
|
|
|
{
|
2023-05-04 15:18:49 -04:00
|
|
|
<li class="nav-item" active-controller="Users">
|
|
|
|
|
<a class="nav-link" asp-controller="Users" asp-action="Index">Users</a>
|
2019-02-15 16:18:34 -05:00
|
|
|
</li>
|
2023-05-04 15:18:49 -04:00
|
|
|
}
|
|
|
|
|
@if (canViewOrgs)
|
|
|
|
|
{
|
|
|
|
|
<li class="nav-item" active-controller="Organizations">
|
|
|
|
|
<a class="nav-link" asp-controller="Organizations" asp-action="Index">Organizations</a>
|
2018-03-29 23:30:56 -04:00
|
|
|
</li>
|
|
|
|
|
}
|
2023-05-04 15:18:49 -04:00
|
|
|
@if (!GlobalSettings.SelfHosted)
|
|
|
|
|
{
|
|
|
|
|
@if (canViewProviders)
|
|
|
|
|
{
|
|
|
|
|
<li class="nav-item" active-controller="Providers">
|
|
|
|
|
<a class="nav-link" asp-controller="Providers" asp-action="Index">Providers</a>
|
|
|
|
|
</li>
|
|
|
|
|
}
|
|
|
|
|
@if (canViewTools)
|
|
|
|
|
{
|
|
|
|
|
<li class="nav-item dropdown" active-controller="tools">
|
|
|
|
|
<a class="nav-link dropdown-toggle" href="#" id="toolsDropdown" role="button"
|
2024-11-19 12:04:54 +00:00
|
|
|
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
2023-05-04 15:18:49 -04:00
|
|
|
Tools
|
|
|
|
|
</a>
|
2024-11-19 12:04:54 +00:00
|
|
|
<ul class="dropdown-menu" aria-labelledby="toolsDropdown">
|
2023-05-04 15:18:49 -04:00
|
|
|
@if (canChargeBraintree)
|
|
|
|
|
{
|
|
|
|
|
<a class="dropdown-item" asp-controller="Tools" asp-action="ChargeBraintree">
|
|
|
|
|
Charge Braintree Customer
|
|
|
|
|
</a>
|
|
|
|
|
}
|
|
|
|
|
@if (canCreateTransaction)
|
|
|
|
|
{
|
|
|
|
|
<a class="dropdown-item" asp-controller="Tools" asp-action="CreateTransaction">
|
|
|
|
|
Create Transaction
|
|
|
|
|
</a>
|
|
|
|
|
}
|
|
|
|
|
@if (canPromoteAdmin)
|
|
|
|
|
{
|
|
|
|
|
<a class="dropdown-item" asp-controller="Tools" asp-action="PromoteAdmin">
|
2025-01-06 08:06:09 -06:00
|
|
|
Promote Organization Admin
|
2023-05-04 15:18:49 -04:00
|
|
|
</a>
|
|
|
|
|
}
|
2024-12-11 11:09:12 +00:00
|
|
|
@if (canPromoteProviderServiceUser)
|
|
|
|
|
{
|
|
|
|
|
<a class="dropdown-item" asp-controller="Tools" asp-action="PromoteProviderServiceUser">
|
|
|
|
|
Promote Provider Service User
|
|
|
|
|
</a>
|
|
|
|
|
}
|
2023-05-04 15:18:49 -04:00
|
|
|
@if (canGenerateLicense)
|
|
|
|
|
{
|
|
|
|
|
<a class="dropdown-item" asp-controller="Tools" asp-action="GenerateLicense">
|
|
|
|
|
Generate License
|
|
|
|
|
</a>
|
|
|
|
|
}
|
|
|
|
|
@if (canManageTaxRates)
|
|
|
|
|
{
|
|
|
|
|
<a class="dropdown-item" asp-controller="Tools" asp-action="TaxRate">
|
|
|
|
|
Manage Tax Rates
|
|
|
|
|
</a>
|
|
|
|
|
}
|
|
|
|
|
@if (canManageStripeSubscriptions)
|
|
|
|
|
{
|
|
|
|
|
<a class="dropdown-item" asp-controller="Tools" asp-action="StripeSubscriptions">
|
|
|
|
|
Manage Stripe Subscriptions
|
|
|
|
|
</a>
|
|
|
|
|
}
|
2024-10-04 10:55:00 -04:00
|
|
|
@if (canProcessStripeEvents)
|
2024-09-26 09:18:21 -04:00
|
|
|
{
|
|
|
|
|
<a class="dropdown-item" asp-controller="ProcessStripeEvents" asp-action="Index">
|
|
|
|
|
Process Stripe Events
|
|
|
|
|
</a>
|
|
|
|
|
}
|
2024-10-04 10:55:00 -04:00
|
|
|
@if (canMigrateProviders)
|
|
|
|
|
{
|
|
|
|
|
<a class="dropdown-item" asp-controller="MigrateProviders" asp-action="index">
|
|
|
|
|
Migrate Providers
|
|
|
|
|
</a>
|
|
|
|
|
}
|
2024-11-19 12:04:54 +00:00
|
|
|
</ul>
|
2023-05-04 15:18:49 -04:00
|
|
|
</li>
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-03-23 16:09:49 -04:00
|
|
|
}
|
2023-05-04 15:18:49 -04:00
|
|
|
@if (GlobalSettings.SelfHosted)
|
2018-03-30 00:16:41 -04:00
|
|
|
{
|
|
|
|
|
<li class="nav-item">
|
2024-02-23 14:54:41 +01:00
|
|
|
<a class="nav-link" href="https://help.bitwarden.com/hosting/" target="_blank"
|
|
|
|
|
rel="noreferrer">Docs</a>
|
2018-03-30 00:16:41 -04:00
|
|
|
</li>
|
|
|
|
|
}
|
2018-03-21 13:03:53 -04:00
|
|
|
</ul>
|
2023-05-04 15:18:49 -04:00
|
|
|
@if (SignInManager.IsSignedIn(User))
|
2018-03-23 10:12:09 -04:00
|
|
|
{
|
|
|
|
|
<form asp-controller="Login" asp-action="Logout" method="post">
|
2018-04-16 21:37:33 -04:00
|
|
|
<button type="submit" class="btn btn-sm btn-secondary">Log Out</button>
|
2018-03-23 10:12:09 -04:00
|
|
|
</form>
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2018-04-16 21:37:33 -04:00
|
|
|
<a class="btn btn-sm btn-secondary" asp-controller="Login" asp-action="Index">Log In</a>
|
2018-03-23 10:12:09 -04:00
|
|
|
}
|
2018-03-21 13:03:53 -04:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</nav>
|
|
|
|
|
|
|
|
|
|
<main role="main" class="container">
|
|
|
|
|
@RenderBody()
|
|
|
|
|
</main>
|
2018-03-21 12:57:43 -04:00
|
|
|
|
2018-03-21 16:26:49 -04:00
|
|
|
<footer class="container mb-4">
|
|
|
|
|
<hr />
|
2020-02-18 22:22:32 -05:00
|
|
|
© @DateTime.Now.Year, Bitwarden Inc.
|
2018-03-21 16:26:49 -04:00
|
|
|
</footer>
|
|
|
|
|
|
2024-07-31 21:41:55 +02:00
|
|
|
<script src="~/assets/site.js" asp-append-version="true"></script>
|
2018-03-21 12:57:43 -04:00
|
|
|
|
2021-08-10 12:28:00 -04:00
|
|
|
@if (TempData["Error"] != null)
|
|
|
|
|
{
|
|
|
|
|
<script>
|
|
|
|
|
$(document).ready(function () {
|
|
|
|
|
toastr.error("@TempData["Error"]")
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
}
|
2024-05-22 12:59:19 -04:00
|
|
|
@if (TempData["Success"] != null)
|
|
|
|
|
{
|
|
|
|
|
<script>
|
|
|
|
|
$(document).ready(function () {
|
|
|
|
|
toastr.success("@TempData["Success"]")
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
}
|
2021-08-10 12:28:00 -04:00
|
|
|
|
2018-03-21 12:57:43 -04:00
|
|
|
@RenderSection("Scripts", required: false)
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|