-
-
Save ebicoglu/bb28666a892646b245b2a525d5760bb7 to your computer and use it in GitHub Desktop.
@using Microsoft.Extensions.Localization | |
@using Microsoft.Extensions.Options | |
@using Volo.Abp.AspNetCore.MultiTenancy | |
@using Volo.Abp.AspNetCore.Mvc.AntiForgery | |
@using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook | |
@using Volo.Abp.AspNetCore.Mvc.UI.Layout | |
@using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.Localization | |
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling | |
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Themes.Lepton.Components.Content.Alerts | |
@using Volo.Abp.Ui.Branding | |
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Themes.Lepton.Components.Header.Brand | |
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Themes.Lepton.Components.Toolbar.LanguageSwitch | |
@using Volo.Abp.AspNetCore.Mvc.UI.Theming | |
@using Volo.Abp.AspNetCore.Mvc.UI.Widgets.Components.WidgetScripts | |
@using Volo.Abp.AspNetCore.Mvc.UI.Widgets.Components.WidgetStyles | |
@using Volo.Abp.Localization | |
@using Volo.Abp.MultiTenancy | |
@inject IAbpAntiForgeryManager AbpAntiForgeryManager | |
@inject IBrandingProvider BrandingProvider | |
@inject IPageLayout PageLayout | |
@inject IOptions<AbpMultiTenancyOptions> MultiTenancyOptions | |
@inject IOptions<AbpLocalizationOptions> LocalizationOptions | |
@inject ICurrentTenant CurrentTenant | |
@inject IStringLocalizer<AbpUiMultiTenancyResource> MultiTenancyStringLocalizer | |
@inject ITenantResolveResultAccessor TenantResolveResultAccessor | |
@{ Layout = null; | |
AbpAntiForgeryManager.SetCookie(); | |
var containerClass = ViewBag.FluidLayout == true ? "container-fluid" : "container"; //TODO: Better and type-safe options | |
var logoUrl = BrandingProvider.LogoUrl == null ? null : "--logo: url(" + BrandingProvider.LogoUrl + ") !important;"; | |
var logoReverseUrl = BrandingProvider.LogoReverseUrl == null ? null : "--logo-reverse: url(" + BrandingProvider.LogoReverseUrl + ") !important;"; | |
var langDir = CultureHelper.IsRtl ? "rtl" : string.Empty; } | |
<!DOCTYPE html> | |
<html lang="@CultureInfo.CurrentCulture.Name" dir="@langDir"> | |
<head> | |
@await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Account) | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> | |
<meta http-equiv="X-UA-Compatible" content="ie=edge"> | |
<meta name="description" content="@ViewBag.MetaDescription"> | |
<link rel="apple-touch-icon" sizes="180x180" href="~/images/favicon/apple-touch-icon.png"> | |
<link rel="icon" type="image/png" sizes="32x32" href="~/images/favicon/favicon-32x32.png"> | |
<link rel="icon" type="image/png" sizes="16x16" href="~/images/favicon/favicon-16x16.png"> | |
<link rel="manifest" href="~/images/favicon/site.webmanifest"> | |
<link rel="mask-icon" href="~/images/favicon/safari-pinned-tab.svg" color="#5bbad5"> | |
<title>@(ViewBag.Title == null ? BrandingProvider.AppName : ViewBag.Title)</title> | |
<abp-style-bundle name="@LeptonThemeBundles.Styles.Global" /> | |
@* TODO: We can continue with this until find a better way *@ | |
@if (logoUrl != null || logoReverseUrl != null) | |
{ | |
<style> | |
:root { | |
@logoUrl | |
@logoReverseUrl | |
} | |
.card { | |
background: #55535f; | |
color: #ffffff; | |
border-radius: 250px; | |
padding: 50px; | |
min-width: 500px; | |
text-align: center; | |
} | |
body { | |
background-color: #9B9B9B; | |
text-align: center; | |
background-image: url('https://placeimg.com/640/480/tech/grayscale'); | |
} | |
</style> | |
} | |
@await Component.InvokeAsync(typeof(WidgetStylesViewComponent)) | |
@await RenderSectionAsync("styles", false) | |
@await Component.InvokeLayoutHookAsync(LayoutHooks.Head.Last, StandardLayouts.Account) | |
</head> | |
<body class="abp-account-layout @langDir"> | |
@await Component.InvokeLayoutHookAsync(LayoutHooks.Body.First, StandardLayouts.Account) | |
<div class="account-header fixed-top p-3"> | |
</div> | |
<div class="d-flex align-items-center" style="min-height: 100vh;"> | |
<div style="margin-left: 35%;"> | |
<abp-row> | |
<abp-column class="col mx-auto"> | |
<div class="account-brand p-4 text-center mb-1"> | |
@(await Component.InvokeAsync<HeaderBrandViewComponent>()) | |
</div> | |
<div class="card"> | |
<div class="card-header"> | |
<h2 class="card-title d-inline-block">@PageLayout.Content.Title</h2> | |
@if (LocalizationOptions.Value.Languages.Count > 1) | |
{ | |
<nav class="navbar navbar-expand p-0 pt-1 float-right"> | |
<ul class="navbar-nav ml-auto toolbar-nav"> | |
<li class="nav-item"> | |
@(await Component.InvokeAsync<LanguageSwitchViewComponent>()) | |
</li> | |
</ul> | |
</nav>} | |
</div> | |
@if (MultiTenancyOptions.Value.IsEnabled && | |
(TenantResolveResultAccessor.Result?.AppliedResolvers?.Contains(CookieTenantResolveContributor.ContributorName) == true)) | |
{ | |
<div class="card-header bg-light"> | |
<div class="tenant-switch-box"> | |
<div class="row"> | |
<div class="col pr-1"> | |
<h6 class="m-0"> | |
@MultiTenancyStringLocalizer["Tenant"] | |
</h6> | |
@if (CurrentTenant.Id == null) | |
{ | |
<i class="text-muted">@MultiTenancyStringLocalizer["NotSelected"]</i> } | |
else | |
{ | |
<span> Your tenant name <strong>@(CurrentTenant.Name ?? CurrentTenant.Id.Value.ToString())</strong></span>} | |
</div> | |
<div class="col-auto pl-1"> | |
<a id="AbpTenantSwitchLink" style="cursor: pointer" href="javascript:;" class="btn btn-sm btn-outline-primary float-right">@MultiTenancyStringLocalizer["Switch"]</a> | |
</div> | |
</div> | |
</div> | |
</div>} | |
<div class="card-body"> | |
@(await Component.InvokeAsync<ContentAlertsViewComponent>()) | |
@RenderBody() | |
</div> | |
</div> | |
<div class="p-1 text-center text-muted"> | |
@await Html.PartialAsync("~/Themes/Lepton/Layouts/Account/_Footer.cshtml") | |
</div> | |
</abp-column> | |
</abp-row> | |
</div> | |
</div> | |
<abp-script-bundle name="@LeptonThemeBundles.Scripts.Global" /> | |
<script type="text/javascript" src="~/Abp/ApplicationConfigurationScript"></script> | |
<script type="text/javascript" src="~/Abp/ServiceProxyScript"></script> | |
@await Component.InvokeAsync(typeof(WidgetScriptsViewComponent)) | |
@await RenderSectionAsync("scripts", false) | |
@await Component.InvokeLayoutHookAsync(LayoutHooks.Body.Last, StandardLayouts.Account) | |
</body> | |
</html> |
@page | |
@using Microsoft.AspNetCore.Mvc.Localization | |
@using Volo.Abp.Account.Localization | |
@using Volo.Abp.Account.Public.Web.Security.Recaptcha | |
@using Volo.Abp.Account.Security.Recaptcha | |
@using Volo.Abp.Account.Settings | |
@using Volo.Abp.Settings | |
@model Volo.Abp.Account.Public.Web.Pages.Account.RegisterModel | |
@inject IHtmlLocalizer<AccountResource> L | |
@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout | |
@inject ISettingProvider SettingProvider | |
@{ | |
PageLayout.Content.Title = L["Register"].Value; | |
var reCaptchaVersion = await SettingProvider.GetAsync<int>(AccountSettingNames.Captcha.Version); | |
} | |
@section scripts | |
{ | |
@if (Model.UseCaptcha) | |
{ | |
if (reCaptchaVersion == 3) | |
{ | |
<recaptcha-script-v3 /> | |
<recaptcha-script-v3-js action="register" callback="(function(){$('#@RecaptchaValidatorBase.RecaptchaResponseKey').val(token)})" /> | |
} | |
else | |
{ | |
<recaptcha-script-v2 /> | |
} | |
} | |
} | |
<div class="account-module-form"> | |
<form method="post"> | |
@if (Model.UseCaptcha) | |
{ | |
<input type="hidden" name="@RecaptchaValidatorBase.RecaptchaResponseKey" id="@RecaptchaValidatorBase.RecaptchaResponseKey" /> | |
} | |
@if (!Model.IsExternalLogin) | |
{ | |
<abp-input asp-for="Input.UserName" auto-focus="true" /> | |
} | |
<abp-input asp-for="Input.EmailAddress" /> | |
@if (!Model.IsExternalLogin) | |
{ | |
<abp-input asp-for="Input.Password" /> | |
} | |
@if (reCaptchaVersion == 2) | |
{ | |
<recaptcha-div-v2 callback="(function(){$('#@RecaptchaValidatorBase.RecaptchaResponseKey').val(token)})" /> | |
} | |
<abp-button button-type="Primary" size="Block" type="submit" class="mt-2 mb-3">@L["Register"]</abp-button> | |
@L["AlreadyRegistered"] <a href="@Url.Page("./Login", new {returnUrl = Model.ReturnUrl, returnUrlHash = Model.ReturnUrlHash})">@L["Login"]</a> | |
</form> | |
<div class="mt-3"> | |
<hr /> | |
<p class="font-weight-light"> | |
<small>By clicking Register button, you agree to our <a href="/Account/TermsConditions">Terms & Conditions</a> and <a href="#">Privacy Policy</a>.</small> | |
</p> | |
</div> | |
</div> | |
ebicoglu
commented
May 25, 2021
I got here from this support ticket but following this code I´m getting the following errors and un-styled UI.
I have been unable to find the cause of this and have nothing to go on with... the only other similar issue I found was this one with no resolution.
Btw I'm using the source code for Volo.Account.Pro module (I haven´t changed it yet so its 100% the same)
Any ideas?
Uncaught ReferenceError: $ is not defined
in ApplicationConfigurationScript
and
Uncaught ReferenceError: abp is not defined
in ServiceProxyScript
For the record I have successfully customised the login page by following this guide and reading the docs
My setup:
Version 4.3.2
Blazor
EFCore
Separate Identity Server (so this code is in there)
p.s
My goal is removing the "tenant-switch-box" from both the register and login window (but for now no change in your code)