From f96129fa378216741d873d821a167360af22f219 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Thu, 11 Aug 2022 17:09:32 -0400 Subject: [PATCH] Blazor Hybrid / .NET MAUI support --- .../OqtaneServiceCollectionExtensions.cs | 2 +- Oqtane.Client/Modules/Admin/Login/Index.razor | 23 +- Oqtane.Client/Modules/Admin/Sites/Add.razor | 2 +- Oqtane.Client/Modules/ModuleBase.cs | 3 +- Oqtane.Client/Program.cs | 2 +- .../Services/Interfaces/IUserService.cs | 4 +- Oqtane.Client/Services/UserService.cs | 4 +- .../Themes/Controls/Theme/LoginBase.cs | 22 +- Oqtane.Client/UI/ThemeBuilder.razor | 3 +- Oqtane.Maui.sln | 32 ++ Oqtane.Maui/App.xaml | 26 + Oqtane.Maui/App.xaml.cs | 11 + Oqtane.Maui/Main.razor | 26 + Oqtane.Maui/MainPage.xaml | 14 + Oqtane.Maui/MainPage.xaml.cs | 9 + Oqtane.Maui/MauiProgram.cs | 154 +++++ Oqtane.Maui/Oqtane.Maui.csproj | 68 +++ .../Platforms/Android/AndroidManifest.xml | 6 + Oqtane.Maui/Platforms/Android/MainActivity.cs | 10 + .../Platforms/Android/MainApplication.cs | 15 + .../Android/Resources/values/colors.xml | 6 + .../Platforms/MacCatalyst/AppDelegate.cs | 9 + Oqtane.Maui/Platforms/MacCatalyst/Info.plist | 30 + Oqtane.Maui/Platforms/MacCatalyst/Program.cs | 15 + Oqtane.Maui/Platforms/Tizen/Main.cs | 16 + .../Platforms/Tizen/tizen-manifest.xml | 15 + Oqtane.Maui/Platforms/Windows/App.xaml | 8 + Oqtane.Maui/Platforms/Windows/App.xaml.cs | 24 + .../Platforms/Windows/Package.appxmanifest | 43 ++ Oqtane.Maui/Platforms/Windows/app.manifest | 15 + Oqtane.Maui/Platforms/iOS/AppDelegate.cs | 9 + Oqtane.Maui/Platforms/iOS/Info.plist | 32 ++ Oqtane.Maui/Platforms/iOS/Program.cs | 15 + Oqtane.Maui/Properties/launchSettings.json | 8 + Oqtane.Maui/Resources/AppIcon/appicon.svg | 4 + Oqtane.Maui/Resources/AppIcon/appiconfg.svg | 8 + .../Resources/Fonts/OpenSans-Regular.ttf | Bin 0 -> 107128 bytes Oqtane.Maui/Resources/Images/dotnet_bot.svg | 93 +++ Oqtane.Maui/Resources/Splash/splash.svg | 8 + Oqtane.Maui/_Imports.razor | 7 + Oqtane.Maui/wwwroot/css/app.css | 215 +++++++ Oqtane.Maui/wwwroot/css/empty.css | 0 .../wwwroot/css/open-iconic/FONT-LICENSE | 86 +++ .../wwwroot/css/open-iconic/ICON-LICENSE | 21 + Oqtane.Maui/wwwroot/css/open-iconic/README.md | 114 ++++ .../font/css/open-iconic-bootstrap.min.css | 1 + .../open-iconic/font/fonts/open-iconic.eot | Bin 0 -> 28196 bytes .../open-iconic/font/fonts/open-iconic.otf | Bin 0 -> 20996 bytes .../open-iconic/font/fonts/open-iconic.svg | 543 ++++++++++++++++++ .../open-iconic/font/fonts/open-iconic.ttf | Bin 0 -> 28028 bytes .../open-iconic/font/fonts/open-iconic.woff | Bin 0 -> 14984 bytes Oqtane.Maui/wwwroot/favicon.ico | Bin 0 -> 318 bytes Oqtane.Maui/wwwroot/images/checked.png | Bin 0 -> 427 bytes Oqtane.Maui/wwwroot/images/error.png | Bin 0 -> 1623 bytes Oqtane.Maui/wwwroot/images/help.png | Bin 0 -> 801 bytes Oqtane.Maui/wwwroot/images/logo-black.png | Bin 0 -> 8093 bytes Oqtane.Maui/wwwroot/images/logo-white.png | Bin 0 -> 7963 bytes Oqtane.Maui/wwwroot/images/null.png | Bin 0 -> 177 bytes Oqtane.Maui/wwwroot/images/unchecked.png | Bin 0 -> 438 bytes Oqtane.Maui/wwwroot/index.html | 34 ++ Oqtane.Maui/wwwroot/js/app.js | 8 + Oqtane.Maui/wwwroot/js/interop.js | 394 +++++++++++++ Oqtane.Maui/wwwroot/js/loadjs.min.js | 1 + Oqtane.Maui/wwwroot/oqtane-glow.png | Bin 0 -> 63337 bytes Oqtane.Server/Controllers/UserController.cs | 7 +- Oqtane.Server/Infrastructure/TenantManager.cs | 13 +- Oqtane.Server/Pages/_Host.cshtml | 2 +- Oqtane.Server/Pages/_Host.cshtml.cs | 10 +- Oqtane.Server/Repository/FileRepository.cs | 2 +- .../AutoValidateAntiforgeryTokenFilter.cs | 2 +- Oqtane.Shared/Enums/Runtime.cs | 3 +- Oqtane.Shared/Models/Alias.cs | 12 +- Oqtane.Shared/Shared/Constants.cs | 3 + Oqtane.Shared/Shared/Utilities.cs | 9 +- Oqtane.sln | 4 +- 75 files changed, 2244 insertions(+), 41 deletions(-) create mode 100644 Oqtane.Maui.sln create mode 100644 Oqtane.Maui/App.xaml create mode 100644 Oqtane.Maui/App.xaml.cs create mode 100644 Oqtane.Maui/Main.razor create mode 100644 Oqtane.Maui/MainPage.xaml create mode 100644 Oqtane.Maui/MainPage.xaml.cs create mode 100644 Oqtane.Maui/MauiProgram.cs create mode 100644 Oqtane.Maui/Oqtane.Maui.csproj create mode 100644 Oqtane.Maui/Platforms/Android/AndroidManifest.xml create mode 100644 Oqtane.Maui/Platforms/Android/MainActivity.cs create mode 100644 Oqtane.Maui/Platforms/Android/MainApplication.cs create mode 100644 Oqtane.Maui/Platforms/Android/Resources/values/colors.xml create mode 100644 Oqtane.Maui/Platforms/MacCatalyst/AppDelegate.cs create mode 100644 Oqtane.Maui/Platforms/MacCatalyst/Info.plist create mode 100644 Oqtane.Maui/Platforms/MacCatalyst/Program.cs create mode 100644 Oqtane.Maui/Platforms/Tizen/Main.cs create mode 100644 Oqtane.Maui/Platforms/Tizen/tizen-manifest.xml create mode 100644 Oqtane.Maui/Platforms/Windows/App.xaml create mode 100644 Oqtane.Maui/Platforms/Windows/App.xaml.cs create mode 100644 Oqtane.Maui/Platforms/Windows/Package.appxmanifest create mode 100644 Oqtane.Maui/Platforms/Windows/app.manifest create mode 100644 Oqtane.Maui/Platforms/iOS/AppDelegate.cs create mode 100644 Oqtane.Maui/Platforms/iOS/Info.plist create mode 100644 Oqtane.Maui/Platforms/iOS/Program.cs create mode 100644 Oqtane.Maui/Properties/launchSettings.json create mode 100644 Oqtane.Maui/Resources/AppIcon/appicon.svg create mode 100644 Oqtane.Maui/Resources/AppIcon/appiconfg.svg create mode 100644 Oqtane.Maui/Resources/Fonts/OpenSans-Regular.ttf create mode 100644 Oqtane.Maui/Resources/Images/dotnet_bot.svg create mode 100644 Oqtane.Maui/Resources/Splash/splash.svg create mode 100644 Oqtane.Maui/_Imports.razor create mode 100644 Oqtane.Maui/wwwroot/css/app.css create mode 100644 Oqtane.Maui/wwwroot/css/empty.css create mode 100644 Oqtane.Maui/wwwroot/css/open-iconic/FONT-LICENSE create mode 100644 Oqtane.Maui/wwwroot/css/open-iconic/ICON-LICENSE create mode 100644 Oqtane.Maui/wwwroot/css/open-iconic/README.md create mode 100644 Oqtane.Maui/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css create mode 100644 Oqtane.Maui/wwwroot/css/open-iconic/font/fonts/open-iconic.eot create mode 100644 Oqtane.Maui/wwwroot/css/open-iconic/font/fonts/open-iconic.otf create mode 100644 Oqtane.Maui/wwwroot/css/open-iconic/font/fonts/open-iconic.svg create mode 100644 Oqtane.Maui/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf create mode 100644 Oqtane.Maui/wwwroot/css/open-iconic/font/fonts/open-iconic.woff create mode 100644 Oqtane.Maui/wwwroot/favicon.ico create mode 100644 Oqtane.Maui/wwwroot/images/checked.png create mode 100644 Oqtane.Maui/wwwroot/images/error.png create mode 100644 Oqtane.Maui/wwwroot/images/help.png create mode 100644 Oqtane.Maui/wwwroot/images/logo-black.png create mode 100644 Oqtane.Maui/wwwroot/images/logo-white.png create mode 100644 Oqtane.Maui/wwwroot/images/null.png create mode 100644 Oqtane.Maui/wwwroot/images/unchecked.png create mode 100644 Oqtane.Maui/wwwroot/index.html create mode 100644 Oqtane.Maui/wwwroot/js/app.js create mode 100644 Oqtane.Maui/wwwroot/js/interop.js create mode 100644 Oqtane.Maui/wwwroot/js/loadjs.min.js create mode 100644 Oqtane.Maui/wwwroot/oqtane-glow.png diff --git a/Oqtane.Client/Extensions/OqtaneServiceCollectionExtensions.cs b/Oqtane.Client/Extensions/OqtaneServiceCollectionExtensions.cs index a994ff33..bc1d4780 100644 --- a/Oqtane.Client/Extensions/OqtaneServiceCollectionExtensions.cs +++ b/Oqtane.Client/Extensions/OqtaneServiceCollectionExtensions.cs @@ -16,7 +16,7 @@ namespace Microsoft.Extensions.DependencyInjection return services; } - internal static IServiceCollection AddOqtaneScopedServices(this IServiceCollection services) + public static IServiceCollection AddOqtaneScopedServices(this IServiceCollection services) { services.AddScoped(); services.AddScoped(); diff --git a/Oqtane.Client/Modules/Admin/Login/Index.razor b/Oqtane.Client/Modules/Admin/Login/Index.razor index 14916d80..0828d9ce 100644 --- a/Oqtane.Client/Modules/Admin/Login/Index.razor +++ b/Oqtane.Client/Modules/Admin/Login/Index.razor @@ -184,11 +184,12 @@ var interop = new Interop(JSRuntime); if (await interop.FormValid(login)) { + var hybrid = (PageState.Runtime == Shared.Runtime.Hybrid); var user = new User { SiteId = PageState.Site.SiteId, Username = _username, Password = _password, LastIPAddress = SiteState.RemoteIPAddress}; - + if (!twofactor) { - user = await UserService.LoginUserAsync(user); + user = await UserService.LoginUserAsync(user, hybrid, _remember); } else { @@ -199,10 +200,20 @@ { await logger.LogInformation(LogFunction.Security, "Login Successful For Username {Username}", _username); - // post back to the Login page so that the cookies are set correctly - var fields = new { __RequestVerificationToken = SiteState.AntiForgeryToken, username = _username, password = _password, remember = _remember, returnurl = _returnUrl }; - string url = Utilities.TenantUrl(PageState.Alias, "/pages/login/"); - await interop.SubmitForm(url, fields); + if (hybrid) + { + // hybrid apps utilize an interactive login + var authstateprovider = (IdentityAuthenticationStateProvider)ServiceProvider.GetService(typeof(IdentityAuthenticationStateProvider)); + authstateprovider.NotifyAuthenticationChanged(); + NavigationManager.NavigateTo(NavigateUrl(_returnUrl, true)); + } + else + { + // post back to the Login page so that the cookies are set correctly + var fields = new { __RequestVerificationToken = SiteState.AntiForgeryToken, username = _username, password = _password, remember = _remember, returnurl = _returnUrl }; + string url = Utilities.TenantUrl(PageState.Alias, "/pages/login/"); + await interop.SubmitForm(url, fields); + } } else { diff --git a/Oqtane.Client/Modules/Admin/Sites/Add.razor b/Oqtane.Client/Modules/Admin/Sites/Add.razor index f1ac13fe..76967b40 100644 --- a/Oqtane.Client/Modules/Admin/Sites/Add.razor +++ b/Oqtane.Client/Modules/Admin/Sites/Add.razor @@ -336,7 +336,7 @@ else user.Username = _hostusername; user.Password = _hostpassword; user.LastIPAddress = PageState.RemoteIPAddress; - user = await UserService.LoginUserAsync(user); + user = await UserService.LoginUserAsync(user, false, false); if (user.IsAuthenticated) { var database = _databases.SingleOrDefault(d => d.Name == _databaseName); diff --git a/Oqtane.Client/Modules/ModuleBase.cs b/Oqtane.Client/Modules/ModuleBase.cs index b87c6a2c..13f7fe81 100644 --- a/Oqtane.Client/Modules/ModuleBase.cs +++ b/Oqtane.Client/Modules/ModuleBase.cs @@ -55,7 +55,8 @@ namespace Oqtane.Modules var scripts = new List(); foreach (Resource resource in Resources.Where(item => item.ResourceType == ResourceType.Script)) { - scripts.Add(new { href = resource.Url, bundle = resource.Bundle ?? "", integrity = resource.Integrity ?? "", crossorigin = resource.CrossOrigin ?? "", es6module = resource.ES6Module }); + var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + "/" + resource.Url; + scripts.Add(new { href = url, bundle = resource.Bundle ?? "", integrity = resource.Integrity ?? "", crossorigin = resource.CrossOrigin ?? "", es6module = resource.ES6Module }); } if (scripts.Any()) { diff --git a/Oqtane.Client/Program.cs b/Oqtane.Client/Program.cs index 0a327c7a..40ed3917 100644 --- a/Oqtane.Client/Program.cs +++ b/Oqtane.Client/Program.cs @@ -33,7 +33,7 @@ namespace Oqtane.Client builder.Services.AddOptions(); - // Register localization services + // register localization services builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); // register auth services diff --git a/Oqtane.Client/Services/Interfaces/IUserService.cs b/Oqtane.Client/Services/Interfaces/IUserService.cs index 012c5f79..00102a5e 100644 --- a/Oqtane.Client/Services/Interfaces/IUserService.cs +++ b/Oqtane.Client/Services/Interfaces/IUserService.cs @@ -54,8 +54,10 @@ namespace Oqtane.Services /// Note that this will probably not be a real User, but a user object where the `Username` and `Password` have been filled. /// /// A object which should have at least the and set. + /// Determines if the login cookie should be set (only relevant for Hybrid scenarios) + /// Determines if the login cookie should be persisted for a long time. /// - Task LoginUserAsync(User user); + Task LoginUserAsync(User user, bool setCookie, bool isPersistent); /// /// Logout a diff --git a/Oqtane.Client/Services/UserService.cs b/Oqtane.Client/Services/UserService.cs index 7d363e07..24440df5 100644 --- a/Oqtane.Client/Services/UserService.cs +++ b/Oqtane.Client/Services/UserService.cs @@ -39,9 +39,9 @@ namespace Oqtane.Services await DeleteAsync($"{Apiurl}/{userId}?siteid={siteId}"); } - public async Task LoginUserAsync(User user) + public async Task LoginUserAsync(User user, bool setCookie, bool isPersistent) { - return await PostJsonAsync($"{Apiurl}/login", user); + return await PostJsonAsync($"{Apiurl}/login?setcookie={setCookie}&persistent={isPersistent}", user); } public async Task LogoutUserAsync(User user) diff --git a/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs b/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs index 6965b845..facebb15 100644 --- a/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs +++ b/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs @@ -3,6 +3,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using Oqtane.Enums; +using Oqtane.Providers; using Oqtane.Security; using Oqtane.Services; using Oqtane.Shared; @@ -38,12 +39,23 @@ namespace Oqtane.Themes.Controls if (!UserSecurity.IsAuthorized(null, PermissionNames.View, PageState.Page.Permissions)) { url = PageState.Alias.Path; - } + } - // post to the Logout page to complete the logout process - var fields = new { __RequestVerificationToken = SiteState.AntiForgeryToken, returnurl = url }; - var interop = new Interop(jsRuntime); - await interop.SubmitForm(Utilities.TenantUrl(PageState.Alias, "/pages/logout/"), fields); + if (PageState.Runtime == Shared.Runtime.Hybrid) + { + // hybrid apps utilize an interactive logout + await UserService.LogoutUserAsync(PageState.User); + var authstateprovider = (IdentityAuthenticationStateProvider)ServiceProvider.GetService(typeof(IdentityAuthenticationStateProvider)); + authstateprovider.NotifyAuthenticationChanged(); + NavigationManager.NavigateTo(url, true); + } + else + { + // post to the Logout page to complete the logout process + var fields = new { __RequestVerificationToken = SiteState.AntiForgeryToken, returnurl = url }; + var interop = new Interop(jsRuntime); + await interop.SubmitForm(Utilities.TenantUrl(PageState.Alias, "/pages/logout/"), fields); + } } } } diff --git a/Oqtane.Client/UI/ThemeBuilder.razor b/Oqtane.Client/UI/ThemeBuilder.razor index 449cc4ca..1db0d301 100644 --- a/Oqtane.Client/UI/ThemeBuilder.razor +++ b/Oqtane.Client/UI/ThemeBuilder.razor @@ -36,7 +36,8 @@ foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Stylesheet)) { var prefix = "app-stylesheet-" + resource.Level.ToString().ToLower(); - links.Add(new { id = prefix + "-" + batch + "-" + (links.Count + 1).ToString("00"), rel = "stylesheet", href = resource.Url, type = "text/css", integrity = resource.Integrity ?? "", crossorigin = resource.CrossOrigin ?? "", insertbefore = prefix }); + var url = (resource.Url.Contains("://")) ? resource.Url : PageState.Alias.BaseUrl + "/" + resource.Url; + links.Add(new { id = prefix + "-" + batch + "-" + (links.Count + 1).ToString("00"), rel = "stylesheet", href = url, type = "text/css", integrity = resource.Integrity ?? "", crossorigin = resource.CrossOrigin ?? "", insertbefore = prefix }); } if (links.Any()) { diff --git a/Oqtane.Maui.sln b/Oqtane.Maui.sln new file mode 100644 index 00000000..1082255b --- /dev/null +++ b/Oqtane.Maui.sln @@ -0,0 +1,32 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31611.283 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Oqtane.Maui", "Oqtane.Maui\Oqtane.Maui.csproj", "{5EE64148-2152-4908-A3E7-658EB1D87754}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Oqtane.Server", "Oqtane.Server\Oqtane.Server.csproj", "{62D43CB1-6CFB-4C4D-B6F7-DB610CE23188}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5EE64148-2152-4908-A3E7-658EB1D87754}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5EE64148-2152-4908-A3E7-658EB1D87754}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5EE64148-2152-4908-A3E7-658EB1D87754}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {5EE64148-2152-4908-A3E7-658EB1D87754}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5EE64148-2152-4908-A3E7-658EB1D87754}.Release|Any CPU.Build.0 = Release|Any CPU + {5EE64148-2152-4908-A3E7-658EB1D87754}.Release|Any CPU.Deploy.0 = Release|Any CPU + {62D43CB1-6CFB-4C4D-B6F7-DB610CE23188}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62D43CB1-6CFB-4C4D-B6F7-DB610CE23188}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62D43CB1-6CFB-4C4D-B6F7-DB610CE23188}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62D43CB1-6CFB-4C4D-B6F7-DB610CE23188}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572} + EndGlobalSection +EndGlobal diff --git a/Oqtane.Maui/App.xaml b/Oqtane.Maui/App.xaml new file mode 100644 index 00000000..7d992367 --- /dev/null +++ b/Oqtane.Maui/App.xaml @@ -0,0 +1,26 @@ + + + + + + #512bdf + White + + + + + + + + \ No newline at end of file diff --git a/Oqtane.Maui/App.xaml.cs b/Oqtane.Maui/App.xaml.cs new file mode 100644 index 00000000..0d60ea85 --- /dev/null +++ b/Oqtane.Maui/App.xaml.cs @@ -0,0 +1,11 @@ +namespace Oqtane.Maui; + +public partial class App : Application +{ + public App() + { + InitializeComponent(); + + MainPage = new MainPage(); + } +} diff --git a/Oqtane.Maui/Main.razor b/Oqtane.Maui/Main.razor new file mode 100644 index 00000000..793eb8c9 --- /dev/null +++ b/Oqtane.Maui/Main.razor @@ -0,0 +1,26 @@ +@inherits ErrorBoundary + + + +@code { + Type ComponentType = Type.GetType("Oqtane.App, Oqtane.Client"); + private IDictionary Parameters { get; set; } + + protected override void OnInitialized() + { + Parameters = new Dictionary(); + Parameters.Add(new KeyValuePair("AntiForgeryToken", "")); + Parameters.Add(new KeyValuePair("Runtime", "Hybrid")); + Parameters.Add(new KeyValuePair("RenderMode", "Hybrid")); + Parameters.Add(new KeyValuePair("VisitorId", -1)); + Parameters.Add(new KeyValuePair("RemoteIPAddress", "")); + Parameters.Add(new KeyValuePair("AuthorizationToken", "")); + } + + protected override async Task OnErrorAsync(Exception exception) + { + await base.OnErrorAsync(exception); + return; + } +} + diff --git a/Oqtane.Maui/MainPage.xaml b/Oqtane.Maui/MainPage.xaml new file mode 100644 index 00000000..e56e1dbf --- /dev/null +++ b/Oqtane.Maui/MainPage.xaml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Oqtane.Maui/MainPage.xaml.cs b/Oqtane.Maui/MainPage.xaml.cs new file mode 100644 index 00000000..fc8e97d1 --- /dev/null +++ b/Oqtane.Maui/MainPage.xaml.cs @@ -0,0 +1,9 @@ +namespace Oqtane.Maui; + +public partial class MainPage : ContentPage +{ + public MainPage() + { + InitializeComponent(); + } +} diff --git a/Oqtane.Maui/MauiProgram.cs b/Oqtane.Maui/MauiProgram.cs new file mode 100644 index 00000000..06c9492c --- /dev/null +++ b/Oqtane.Maui/MauiProgram.cs @@ -0,0 +1,154 @@ +using System.IO.Compression; +using System.Reflection; +using System.Runtime.Loader; +using System.Diagnostics; +using Oqtane.Modules; +using Oqtane.Services; +using System.Text.Json; +using System.Text.Json.Nodes; + +namespace Oqtane.Maui; + +public static class MauiProgram +{ + static string url = "http://localhost:44357"; // can be overridden in an appsettings.json in AppDataDirectory + + public static MauiApp CreateMauiApp() + { + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp() + .ConfigureFonts(fonts => + { + fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + }); + + builder.Services.AddMauiBlazorWebView(); + #if DEBUG + builder.Services.AddBlazorWebViewDeveloperTools(); +#endif + + LoadAppSettings(); + + var httpClient = new HttpClient { BaseAddress = new Uri(url) }; + httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(Shared.Constants.MauiUserAgent); + builder.Services.AddSingleton(httpClient); + builder.Services.AddHttpClient(); // IHttpClientFactory for calling remote services via RemoteServiceBase + + // dynamically load client assemblies + LoadClientAssemblies(httpClient); + + // register localization services + builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); + + // register auth services + builder.Services.AddOqtaneAuthorization(); + + // register scoped core services + builder.Services.AddOqtaneScopedServices(); + + var assemblies = AppDomain.CurrentDomain.GetOqtaneAssemblies(); + foreach (var assembly in assemblies) + { + // dynamically register module services + RegisterModuleServices(assembly, builder.Services); + + // register client startup services + RegisterClientStartups(assembly, builder.Services); + } + + return builder.Build(); + } + + private static void LoadAppSettings() + { + string file = Path.Combine(FileSystem.Current.AppDataDirectory, "appsettings.json"); + using FileStream stream = File.OpenRead(file); + using StreamReader reader = new StreamReader(stream); + var content = reader.ReadToEnd(); + var obj = JsonSerializer.Deserialize(content)!; + if (!string.IsNullOrEmpty((string)obj["Url"])) + { + url = (string)obj["Url"]; + } + } + + private static void LoadClientAssemblies(HttpClient http) + { + try + { + // get list of loaded assemblies on the client + var assemblies = AppDomain.CurrentDomain.GetAssemblies().Select(a => a.GetName().Name).ToList(); + + // get assemblies from server and load into client app domain + var zip = http.GetByteArrayAsync($"/api/Installation/load").Result; + + // asemblies and debug symbols are packaged in a zip file + using (ZipArchive archive = new ZipArchive(new MemoryStream(zip))) + { + var dlls = new Dictionary(); + var pdbs = new Dictionary(); + + foreach (ZipArchiveEntry entry in archive.Entries) + { + if (!assemblies.Contains(Path.GetFileNameWithoutExtension(entry.FullName))) + { + using (var memoryStream = new MemoryStream()) + { + entry.Open().CopyTo(memoryStream); + byte[] file = memoryStream.ToArray(); + switch (Path.GetExtension(entry.FullName)) + { + case ".dll": + dlls.Add(entry.FullName, file); + break; + case ".pdb": + pdbs.Add(entry.FullName, file); + break; + } + } + } + } + + foreach (var item in dlls) + { + if (pdbs.ContainsKey(item.Key)) + { + AssemblyLoadContext.Default.LoadFromStream(new MemoryStream(item.Value), new MemoryStream(pdbs[item.Key])); + } + else + { + AssemblyLoadContext.Default.LoadFromStream(new MemoryStream(item.Value)); + } + } + } + } + catch (Exception ex) + { + Debug.WriteLine($"Oqtane Error: Loading Client Assemblies {ex}"); + } + } + + private static void RegisterModuleServices(Assembly assembly, IServiceCollection services) + { + // dynamically register module scoped services + var implementationTypes = assembly.GetInterfaces(); + foreach (var implementationType in implementationTypes) + { + if (implementationType.AssemblyQualifiedName != null) + { + var serviceType = Type.GetType(implementationType.AssemblyQualifiedName.Replace(implementationType.Name, $"I{implementationType.Name}")); + services.AddScoped(serviceType ?? implementationType, implementationType); + } + } + } + + private static void RegisterClientStartups(Assembly assembly, IServiceCollection services) + { + var startUps = assembly.GetInstances(); + foreach (var startup in startUps) + { + startup.ConfigureServices(services); + } + } +} diff --git a/Oqtane.Maui/Oqtane.Maui.csproj b/Oqtane.Maui/Oqtane.Maui.csproj new file mode 100644 index 00000000..b1d0bff4 --- /dev/null +++ b/Oqtane.Maui/Oqtane.Maui.csproj @@ -0,0 +1,68 @@ + + + + net6.0-android;net6.0-ios;net6.0-maccatalyst + $(TargetFrameworks);net6.0-windows10.0.19041.0 + + + Exe + Oqtane.Maui + true + true + enable + false + + + Oqtane.Maui + + + com.oqtane.maui + 0E29FC31-1B83-48ED-B6E0-9F3C67B775D4 + + + 3.1.4 + 1 + + 14.2 + 14.0 + 24.0 + 10.0.17763.0 + 10.0.17763.0 + 6.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\Oqtane.Server\bin\Debug\net6.0\Oqtane.Client.dll + + + ..\Oqtane.Server\bin\Debug\net6.0\Oqtane.Shared.dll + + + + diff --git a/Oqtane.Maui/Platforms/Android/AndroidManifest.xml b/Oqtane.Maui/Platforms/Android/AndroidManifest.xml new file mode 100644 index 00000000..e9937ad7 --- /dev/null +++ b/Oqtane.Maui/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Oqtane.Maui/Platforms/Android/MainActivity.cs b/Oqtane.Maui/Platforms/Android/MainActivity.cs new file mode 100644 index 00000000..bcb3c791 --- /dev/null +++ b/Oqtane.Maui/Platforms/Android/MainActivity.cs @@ -0,0 +1,10 @@ +using Android.App; +using Android.Content.PM; +using Android.OS; + +namespace Oqtane.Maui; + +[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] +public class MainActivity : MauiAppCompatActivity +{ +} diff --git a/Oqtane.Maui/Platforms/Android/MainApplication.cs b/Oqtane.Maui/Platforms/Android/MainApplication.cs new file mode 100644 index 00000000..38c8e6ed --- /dev/null +++ b/Oqtane.Maui/Platforms/Android/MainApplication.cs @@ -0,0 +1,15 @@ +using Android.App; +using Android.Runtime; + +namespace Oqtane.Maui; + +[Application] +public class MainApplication : MauiApplication +{ + public MainApplication(IntPtr handle, JniHandleOwnership ownership) + : base(handle, ownership) + { + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} diff --git a/Oqtane.Maui/Platforms/Android/Resources/values/colors.xml b/Oqtane.Maui/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 00000000..c04d7492 --- /dev/null +++ b/Oqtane.Maui/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #512BD4 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/Oqtane.Maui/Platforms/MacCatalyst/AppDelegate.cs b/Oqtane.Maui/Platforms/MacCatalyst/AppDelegate.cs new file mode 100644 index 00000000..ea18c92f --- /dev/null +++ b/Oqtane.Maui/Platforms/MacCatalyst/AppDelegate.cs @@ -0,0 +1,9 @@ +using Foundation; + +namespace Oqtane.Maui; + +[Register("AppDelegate")] +public class AppDelegate : MauiUIApplicationDelegate +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} diff --git a/Oqtane.Maui/Platforms/MacCatalyst/Info.plist b/Oqtane.Maui/Platforms/MacCatalyst/Info.plist new file mode 100644 index 00000000..c96dd0a2 --- /dev/null +++ b/Oqtane.Maui/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,30 @@ + + + + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/Oqtane.Maui/Platforms/MacCatalyst/Program.cs b/Oqtane.Maui/Platforms/MacCatalyst/Program.cs new file mode 100644 index 00000000..1f902d0e --- /dev/null +++ b/Oqtane.Maui/Platforms/MacCatalyst/Program.cs @@ -0,0 +1,15 @@ +using ObjCRuntime; +using UIKit; + +namespace Oqtane.Maui; + +public class Program +{ + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } +} \ No newline at end of file diff --git a/Oqtane.Maui/Platforms/Tizen/Main.cs b/Oqtane.Maui/Platforms/Tizen/Main.cs new file mode 100644 index 00000000..e9860c5a --- /dev/null +++ b/Oqtane.Maui/Platforms/Tizen/Main.cs @@ -0,0 +1,16 @@ +using System; +using Microsoft.Maui; +using Microsoft.Maui.Hosting; + +namespace Oqtane.Maui; + +class Program : MauiApplication +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + + static void Main(string[] args) + { + var app = new Program(); + app.Run(args); + } +} diff --git a/Oqtane.Maui/Platforms/Tizen/tizen-manifest.xml b/Oqtane.Maui/Platforms/Tizen/tizen-manifest.xml new file mode 100644 index 00000000..dc813535 --- /dev/null +++ b/Oqtane.Maui/Platforms/Tizen/tizen-manifest.xml @@ -0,0 +1,15 @@ + + + + + + appicon.xhigh.png + + + + + http://tizen.org/privilege/internet + + + + \ No newline at end of file diff --git a/Oqtane.Maui/Platforms/Windows/App.xaml b/Oqtane.Maui/Platforms/Windows/App.xaml new file mode 100644 index 00000000..9ace8d3d --- /dev/null +++ b/Oqtane.Maui/Platforms/Windows/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/Oqtane.Maui/Platforms/Windows/App.xaml.cs b/Oqtane.Maui/Platforms/Windows/App.xaml.cs new file mode 100644 index 00000000..334e0b14 --- /dev/null +++ b/Oqtane.Maui/Platforms/Windows/App.xaml.cs @@ -0,0 +1,24 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace Oqtane.Maui.WinUI; + +/// +/// Provides application-specific behavior to supplement the default Application class. +/// +public partial class App : MauiWinUIApplication +{ + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} + diff --git a/Oqtane.Maui/Platforms/Windows/Package.appxmanifest b/Oqtane.Maui/Platforms/Windows/Package.appxmanifest new file mode 100644 index 00000000..2bcb11ed --- /dev/null +++ b/Oqtane.Maui/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,43 @@ + + + + + + + $placeholder$ + User Name + $placeholder$.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Oqtane.Maui/Platforms/Windows/app.manifest b/Oqtane.Maui/Platforms/Windows/app.manifest new file mode 100644 index 00000000..669a2d9a --- /dev/null +++ b/Oqtane.Maui/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/Oqtane.Maui/Platforms/iOS/AppDelegate.cs b/Oqtane.Maui/Platforms/iOS/AppDelegate.cs new file mode 100644 index 00000000..ea18c92f --- /dev/null +++ b/Oqtane.Maui/Platforms/iOS/AppDelegate.cs @@ -0,0 +1,9 @@ +using Foundation; + +namespace Oqtane.Maui; + +[Register("AppDelegate")] +public class AppDelegate : MauiUIApplicationDelegate +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} diff --git a/Oqtane.Maui/Platforms/iOS/Info.plist b/Oqtane.Maui/Platforms/iOS/Info.plist new file mode 100644 index 00000000..0004a4fd --- /dev/null +++ b/Oqtane.Maui/Platforms/iOS/Info.plist @@ -0,0 +1,32 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/Oqtane.Maui/Platforms/iOS/Program.cs b/Oqtane.Maui/Platforms/iOS/Program.cs new file mode 100644 index 00000000..64159aa8 --- /dev/null +++ b/Oqtane.Maui/Platforms/iOS/Program.cs @@ -0,0 +1,15 @@ +using ObjCRuntime; +using UIKit; + +namespace Oqtane.Maui; + +public class Program +{ + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } +} diff --git a/Oqtane.Maui/Properties/launchSettings.json b/Oqtane.Maui/Properties/launchSettings.json new file mode 100644 index 00000000..edf8aadc --- /dev/null +++ b/Oqtane.Maui/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Windows Machine": { + "commandName": "MsixPackage", + "nativeDebugging": false + } + } +} \ No newline at end of file diff --git a/Oqtane.Maui/Resources/AppIcon/appicon.svg b/Oqtane.Maui/Resources/AppIcon/appicon.svg new file mode 100644 index 00000000..9d63b651 --- /dev/null +++ b/Oqtane.Maui/Resources/AppIcon/appicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Oqtane.Maui/Resources/AppIcon/appiconfg.svg b/Oqtane.Maui/Resources/AppIcon/appiconfg.svg new file mode 100644 index 00000000..21dfb25f --- /dev/null +++ b/Oqtane.Maui/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Oqtane.Maui/Resources/Fonts/OpenSans-Regular.ttf b/Oqtane.Maui/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..563a5baa72b57f249e222c47c74223d08f25b981 GIT binary patch literal 107128 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 literal 0 HcmV?d00001 diff --git a/Oqtane.Maui/Resources/Images/dotnet_bot.svg b/Oqtane.Maui/Resources/Images/dotnet_bot.svg new file mode 100644 index 00000000..abfaff26 --- /dev/null +++ b/Oqtane.Maui/Resources/Images/dotnet_bot.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Oqtane.Maui/Resources/Splash/splash.svg b/Oqtane.Maui/Resources/Splash/splash.svg new file mode 100644 index 00000000..21dfb25f --- /dev/null +++ b/Oqtane.Maui/Resources/Splash/splash.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Oqtane.Maui/_Imports.razor b/Oqtane.Maui/_Imports.razor new file mode 100644 index 00000000..1445aeb8 --- /dev/null +++ b/Oqtane.Maui/_Imports.razor @@ -0,0 +1,7 @@ +@using System.Net.Http +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using Oqtane.Maui diff --git a/Oqtane.Maui/wwwroot/css/app.css b/Oqtane.Maui/wwwroot/css/app.css new file mode 100644 index 00000000..5da25ceb --- /dev/null +++ b/Oqtane.Maui/wwwroot/css/app.css @@ -0,0 +1,215 @@ +@import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); + +html, body { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +app { + position: relative; + display: flex; + flex-direction: column; +} + +/* Admin Modal */ +.app-admin-modal .modal { + position: fixed; /* Stay in place */ + z-index: 9999; /* Sit on top */ + left: 0; + top: 0; + display: block; + width: 100%; /* Full width */ + height: 100%; /* Full height */ + overflow: auto; /* Enable scroll if needed */ + background: rgba(0,0,0,0.3); /* Dim background */ +} + + .app-admin-modal .modal-dialog { + width: 100%; /* Full width */ + height: 100%; /* Full height */ + max-width: none; /* Override default of 500px */ + } + + .app-admin-modal .modal-content { + margin: 5% auto; /* 5% from the top and centered */ + width: 80%; /* Could be more or less, depending on screen size */ + } + +/* Action Dialog */ +.app-actiondialog .modal { + position: fixed; /* Stay in place */ + z-index: 9999; /* Sit on top */ + left: 0; + top: 0; + display: block; + width: 100%; /* Full width */ + height: 100%; /* Full height */ + overflow: auto; /* Enable scroll if needed */ + background: rgba(0,0,0,0.3); /* Dim background */ +} + +.app-actiondialog .modal-dialog { + width: 100%; /* Full width */ + height: 100%; /* Full height */ + max-width: none; /* Override default of 500px */ +} + +.app-actiondialog .modal-content { + margin: 15% auto; /* 15% from the top and centered */ + width: 40%; /* Could be more or less, depending on screen size */ +} + +/* Admin Pane */ +.app-pane-admin-border { + width: 100%; + border-width: 1px; + border-style: dashed; + border-color: gray; +} + +.app-pane-admin-title { + width: 100%; + text-align: center; + color: gray; +} + +.app-moduleactions .dropdown-submenu { + position: relative; +} + + .app-moduleactions .dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: 0px; + margin-left: 0px; + } + +.app-progress-indicator { + background: rgba(0,0,0,0.2) url('../loading.gif') no-repeat 50% 50%; + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + z-index: 9999; /* Sit on top */ +} + +.app-rule { + width: 100%; + color: gray; + height: 1px; + background-color: gray; + margin: 0.5rem; +} + +.app-link-unstyled, .app-link-unstyled:visited, .app-link-unstyled:hover, .app-link-unstyled:active, .app-link-unstyled:focus, .app-link-unstyled:active:hover { + font-style: inherit; + color: inherit; + background-color: transparent; + font-size: inherit; + text-decoration: none; + font-variant: inherit; + font-weight: inherit; + line-height: inherit; + font-family: inherit; + border-radius: inherit; + border: inherit; + outline: inherit; + box-shadow: inherit; + padding: inherit; + vertical-align: inherit; +} + +.app-alert { + padding: 20px; + background-color: #f44336; /* red */ + color: white; + margin-bottom: 15px; +} + +.app-moduletitle a { + scroll-margin-top: 7rem; +} + +/* Tooltips */ +.app-tooltip { + cursor: help; + position: relative; +} + + .app-tooltip::before, + .app-tooltip::after { + left: 25%; + opacity: 0; + position: absolute; + z-index: -100; + } + + .app-tooltip:hover::before, + .app-tooltip:focus::before, + .app-tooltip:hover::after, + .app-tooltip:focus::after { + opacity: 1; + transform: scale(1) translateY(0); + z-index: 100; + } + + .app-tooltip::before { + border-style: solid; + border-width: 1em 0.75em 0 0.75em; + border-color: #3E474F transparent transparent transparent; + bottom: 100%; + content: ""; + margin-left: -0.5em; + transition: all .65s cubic-bezier(.84,-0.18,.31,1.26), opacity .65s .5s; + transform: scale(.6) translateY(-90%); + } + + .app-tooltip:hover::before, + .app-tooltip:focus::before { + transition: all .65s cubic-bezier(.84,-0.18,.31,1.26) .2s; + } + + .app-tooltip::after { + background: #3E474F; + border-radius: .25em; + bottom: 140%; + color: #EDEFF0; + content: attr(data-tip); + margin-left: -8.75em; + padding: 1em; + transition: all .65s cubic-bezier(.84,-0.18,.31,1.26) .2s; + transform: scale(.6) translateY(50%); + width: 17.5em; + } + + .app-tooltip:hover::after, + .app-tooltip:focus::after { + transition: all .65s cubic-bezier(.84,-0.18,.31,1.26); + } + +@media (max-width: 760px) { + .app-tooltip::after { + font-size: .75em; + margin-left: -5em; + width: 10em; + } +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + +#blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; +} diff --git a/Oqtane.Maui/wwwroot/css/empty.css b/Oqtane.Maui/wwwroot/css/empty.css new file mode 100644 index 00000000..e69de29b diff --git a/Oqtane.Maui/wwwroot/css/open-iconic/FONT-LICENSE b/Oqtane.Maui/wwwroot/css/open-iconic/FONT-LICENSE new file mode 100644 index 00000000..a1dc03f3 --- /dev/null +++ b/Oqtane.Maui/wwwroot/css/open-iconic/FONT-LICENSE @@ -0,0 +1,86 @@ +SIL OPEN FONT LICENSE Version 1.1 + +Copyright (c) 2014 Waybury + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Oqtane.Maui/wwwroot/css/open-iconic/ICON-LICENSE b/Oqtane.Maui/wwwroot/css/open-iconic/ICON-LICENSE new file mode 100644 index 00000000..2199f4a6 --- /dev/null +++ b/Oqtane.Maui/wwwroot/css/open-iconic/ICON-LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Waybury + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/Oqtane.Maui/wwwroot/css/open-iconic/README.md b/Oqtane.Maui/wwwroot/css/open-iconic/README.md new file mode 100644 index 00000000..6b810e47 --- /dev/null +++ b/Oqtane.Maui/wwwroot/css/open-iconic/README.md @@ -0,0 +1,114 @@ +[Open Iconic v1.1.1](http://useiconic.com/open) +=========== + +### Open Iconic is the open source sibling of [Iconic](http://useiconic.com). It is a hyper-legible collection of 223 icons with a tiny footprint—ready to use with Bootstrap and Foundation. [View the collection](http://useiconic.com/open#icons) + + + +## What's in Open Iconic? + +* 223 icons designed to be legible down to 8 pixels +* Super-light SVG files - 61.8 for the entire set +* SVG sprite—the modern replacement for icon fonts +* Webfont (EOT, OTF, SVG, TTF, WOFF), PNG and WebP formats +* Webfont stylesheets (including versions for Bootstrap and Foundation) in CSS, LESS, SCSS and Stylus formats +* PNG and WebP raster images in 8px, 16px, 24px, 32px, 48px and 64px. + + +## Getting Started + +#### For code samples and everything else you need to get started with Open Iconic, check out our [Icons](http://useiconic.com/open#icons) and [Reference](http://useiconic.com/open#reference) sections. + +### General Usage + +#### Using Open Iconic's SVGs + +We like SVGs and we think they're the way to display icons on the web. Since Open Iconic are just basic SVGs, we suggest you display them like you would any other image (don't forget the `alt` attribute). + +``` +icon name +``` + +#### Using Open Iconic's SVG Sprite + +Open Iconic also comes in a SVG sprite which allows you to display all the icons in the set with a single request. It's like an icon font, without being a hack. + +Adding an icon from an SVG sprite is a little different than what you're used to, but it's still a piece of cake. *Tip: To make your icons easily style able, we suggest adding a general class to the* `` *tag and a unique class name for each different icon in the* `` *tag.* + +``` + + + +``` + +Sizing icons only needs basic CSS. All the icons are in a square format, so just set the `` tag with equal width and height dimensions. + +``` +.icon { + width: 16px; + height: 16px; +} +``` + +Coloring icons is even easier. All you need to do is set the `fill` rule on the `` tag. + +``` +.icon-account-login { + fill: #f00; +} +``` + +To learn more about SVG Sprites, read [Chris Coyier's guide](http://css-tricks.com/svg-sprites-use-better-icon-fonts/). + +#### Using Open Iconic's Icon Font... + + +##### …with Bootstrap + +You can find our Bootstrap stylesheets in `font/css/open-iconic-bootstrap.{css, less, scss, styl}` + + +``` + +``` + + +``` + +``` + +##### …with Foundation + +You can find our Foundation stylesheets in `font/css/open-iconic-foundation.{css, less, scss, styl}` + +``` + +``` + + +``` + +``` + +##### …on its own + +You can find our default stylesheets in `font/css/open-iconic.{css, less, scss, styl}` + +``` + +``` + +``` + +``` + + +## License + +### Icons + +All code (including SVG markup) is under the [MIT License](http://opensource.org/licenses/MIT). + +### Fonts + +All fonts are under the [SIL Licensed](http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web). diff --git a/Oqtane.Maui/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css b/Oqtane.Maui/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css new file mode 100644 index 00000000..4664f2e8 --- /dev/null +++ b/Oqtane.Maui/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css @@ -0,0 +1 @@ +@font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.oi{position:relative;top:1px;display:inline-block;speak:none;font-family:Icons;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi.oi-align-center:before{text-align:center}.oi.oi-align-left:before{text-align:left}.oi.oi-align-right:before{text-align:right}.oi.oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.oi.oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}.oi.oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.oi-account-login:before{content:'\e000'}.oi-account-logout:before{content:'\e001'}.oi-action-redo:before{content:'\e002'}.oi-action-undo:before{content:'\e003'}.oi-align-center:before{content:'\e004'}.oi-align-left:before{content:'\e005'}.oi-align-right:before{content:'\e006'}.oi-aperture:before{content:'\e007'}.oi-arrow-bottom:before{content:'\e008'}.oi-arrow-circle-bottom:before{content:'\e009'}.oi-arrow-circle-left:before{content:'\e00a'}.oi-arrow-circle-right:before{content:'\e00b'}.oi-arrow-circle-top:before{content:'\e00c'}.oi-arrow-left:before{content:'\e00d'}.oi-arrow-right:before{content:'\e00e'}.oi-arrow-thick-bottom:before{content:'\e00f'}.oi-arrow-thick-left:before{content:'\e010'}.oi-arrow-thick-right:before{content:'\e011'}.oi-arrow-thick-top:before{content:'\e012'}.oi-arrow-top:before{content:'\e013'}.oi-audio-spectrum:before{content:'\e014'}.oi-audio:before{content:'\e015'}.oi-badge:before{content:'\e016'}.oi-ban:before{content:'\e017'}.oi-bar-chart:before{content:'\e018'}.oi-basket:before{content:'\e019'}.oi-battery-empty:before{content:'\e01a'}.oi-battery-full:before{content:'\e01b'}.oi-beaker:before{content:'\e01c'}.oi-bell:before{content:'\e01d'}.oi-bluetooth:before{content:'\e01e'}.oi-bold:before{content:'\e01f'}.oi-bolt:before{content:'\e020'}.oi-book:before{content:'\e021'}.oi-bookmark:before{content:'\e022'}.oi-box:before{content:'\e023'}.oi-briefcase:before{content:'\e024'}.oi-british-pound:before{content:'\e025'}.oi-browser:before{content:'\e026'}.oi-brush:before{content:'\e027'}.oi-bug:before{content:'\e028'}.oi-bullhorn:before{content:'\e029'}.oi-calculator:before{content:'\e02a'}.oi-calendar:before{content:'\e02b'}.oi-camera-slr:before{content:'\e02c'}.oi-caret-bottom:before{content:'\e02d'}.oi-caret-left:before{content:'\e02e'}.oi-caret-right:before{content:'\e02f'}.oi-caret-top:before{content:'\e030'}.oi-cart:before{content:'\e031'}.oi-chat:before{content:'\e032'}.oi-check:before{content:'\e033'}.oi-chevron-bottom:before{content:'\e034'}.oi-chevron-left:before{content:'\e035'}.oi-chevron-right:before{content:'\e036'}.oi-chevron-top:before{content:'\e037'}.oi-circle-check:before{content:'\e038'}.oi-circle-x:before{content:'\e039'}.oi-clipboard:before{content:'\e03a'}.oi-clock:before{content:'\e03b'}.oi-cloud-download:before{content:'\e03c'}.oi-cloud-upload:before{content:'\e03d'}.oi-cloud:before{content:'\e03e'}.oi-cloudy:before{content:'\e03f'}.oi-code:before{content:'\e040'}.oi-cog:before{content:'\e041'}.oi-collapse-down:before{content:'\e042'}.oi-collapse-left:before{content:'\e043'}.oi-collapse-right:before{content:'\e044'}.oi-collapse-up:before{content:'\e045'}.oi-command:before{content:'\e046'}.oi-comment-square:before{content:'\e047'}.oi-compass:before{content:'\e048'}.oi-contrast:before{content:'\e049'}.oi-copywriting:before{content:'\e04a'}.oi-credit-card:before{content:'\e04b'}.oi-crop:before{content:'\e04c'}.oi-dashboard:before{content:'\e04d'}.oi-data-transfer-download:before{content:'\e04e'}.oi-data-transfer-upload:before{content:'\e04f'}.oi-delete:before{content:'\e050'}.oi-dial:before{content:'\e051'}.oi-document:before{content:'\e052'}.oi-dollar:before{content:'\e053'}.oi-double-quote-sans-left:before{content:'\e054'}.oi-double-quote-sans-right:before{content:'\e055'}.oi-double-quote-serif-left:before{content:'\e056'}.oi-double-quote-serif-right:before{content:'\e057'}.oi-droplet:before{content:'\e058'}.oi-eject:before{content:'\e059'}.oi-elevator:before{content:'\e05a'}.oi-ellipses:before{content:'\e05b'}.oi-envelope-closed:before{content:'\e05c'}.oi-envelope-open:before{content:'\e05d'}.oi-euro:before{content:'\e05e'}.oi-excerpt:before{content:'\e05f'}.oi-expand-down:before{content:'\e060'}.oi-expand-left:before{content:'\e061'}.oi-expand-right:before{content:'\e062'}.oi-expand-up:before{content:'\e063'}.oi-external-link:before{content:'\e064'}.oi-eye:before{content:'\e065'}.oi-eyedropper:before{content:'\e066'}.oi-file:before{content:'\e067'}.oi-fire:before{content:'\e068'}.oi-flag:before{content:'\e069'}.oi-flash:before{content:'\e06a'}.oi-folder:before{content:'\e06b'}.oi-fork:before{content:'\e06c'}.oi-fullscreen-enter:before{content:'\e06d'}.oi-fullscreen-exit:before{content:'\e06e'}.oi-globe:before{content:'\e06f'}.oi-graph:before{content:'\e070'}.oi-grid-four-up:before{content:'\e071'}.oi-grid-three-up:before{content:'\e072'}.oi-grid-two-up:before{content:'\e073'}.oi-hard-drive:before{content:'\e074'}.oi-header:before{content:'\e075'}.oi-headphones:before{content:'\e076'}.oi-heart:before{content:'\e077'}.oi-home:before{content:'\e078'}.oi-image:before{content:'\e079'}.oi-inbox:before{content:'\e07a'}.oi-infinity:before{content:'\e07b'}.oi-info:before{content:'\e07c'}.oi-italic:before{content:'\e07d'}.oi-justify-center:before{content:'\e07e'}.oi-justify-left:before{content:'\e07f'}.oi-justify-right:before{content:'\e080'}.oi-key:before{content:'\e081'}.oi-laptop:before{content:'\e082'}.oi-layers:before{content:'\e083'}.oi-lightbulb:before{content:'\e084'}.oi-link-broken:before{content:'\e085'}.oi-link-intact:before{content:'\e086'}.oi-list-rich:before{content:'\e087'}.oi-list:before{content:'\e088'}.oi-location:before{content:'\e089'}.oi-lock-locked:before{content:'\e08a'}.oi-lock-unlocked:before{content:'\e08b'}.oi-loop-circular:before{content:'\e08c'}.oi-loop-square:before{content:'\e08d'}.oi-loop:before{content:'\e08e'}.oi-magnifying-glass:before{content:'\e08f'}.oi-map-marker:before{content:'\e090'}.oi-map:before{content:'\e091'}.oi-media-pause:before{content:'\e092'}.oi-media-play:before{content:'\e093'}.oi-media-record:before{content:'\e094'}.oi-media-skip-backward:before{content:'\e095'}.oi-media-skip-forward:before{content:'\e096'}.oi-media-step-backward:before{content:'\e097'}.oi-media-step-forward:before{content:'\e098'}.oi-media-stop:before{content:'\e099'}.oi-medical-cross:before{content:'\e09a'}.oi-menu:before{content:'\e09b'}.oi-microphone:before{content:'\e09c'}.oi-minus:before{content:'\e09d'}.oi-monitor:before{content:'\e09e'}.oi-moon:before{content:'\e09f'}.oi-move:before{content:'\e0a0'}.oi-musical-note:before{content:'\e0a1'}.oi-paperclip:before{content:'\e0a2'}.oi-pencil:before{content:'\e0a3'}.oi-people:before{content:'\e0a4'}.oi-person:before{content:'\e0a5'}.oi-phone:before{content:'\e0a6'}.oi-pie-chart:before{content:'\e0a7'}.oi-pin:before{content:'\e0a8'}.oi-play-circle:before{content:'\e0a9'}.oi-plus:before{content:'\e0aa'}.oi-power-standby:before{content:'\e0ab'}.oi-print:before{content:'\e0ac'}.oi-project:before{content:'\e0ad'}.oi-pulse:before{content:'\e0ae'}.oi-puzzle-piece:before{content:'\e0af'}.oi-question-mark:before{content:'\e0b0'}.oi-rain:before{content:'\e0b1'}.oi-random:before{content:'\e0b2'}.oi-reload:before{content:'\e0b3'}.oi-resize-both:before{content:'\e0b4'}.oi-resize-height:before{content:'\e0b5'}.oi-resize-width:before{content:'\e0b6'}.oi-rss-alt:before{content:'\e0b7'}.oi-rss:before{content:'\e0b8'}.oi-script:before{content:'\e0b9'}.oi-share-boxed:before{content:'\e0ba'}.oi-share:before{content:'\e0bb'}.oi-shield:before{content:'\e0bc'}.oi-signal:before{content:'\e0bd'}.oi-signpost:before{content:'\e0be'}.oi-sort-ascending:before{content:'\e0bf'}.oi-sort-descending:before{content:'\e0c0'}.oi-spreadsheet:before{content:'\e0c1'}.oi-star:before{content:'\e0c2'}.oi-sun:before{content:'\e0c3'}.oi-tablet:before{content:'\e0c4'}.oi-tag:before{content:'\e0c5'}.oi-tags:before{content:'\e0c6'}.oi-target:before{content:'\e0c7'}.oi-task:before{content:'\e0c8'}.oi-terminal:before{content:'\e0c9'}.oi-text:before{content:'\e0ca'}.oi-thumb-down:before{content:'\e0cb'}.oi-thumb-up:before{content:'\e0cc'}.oi-timer:before{content:'\e0cd'}.oi-transfer:before{content:'\e0ce'}.oi-trash:before{content:'\e0cf'}.oi-underline:before{content:'\e0d0'}.oi-vertical-align-bottom:before{content:'\e0d1'}.oi-vertical-align-center:before{content:'\e0d2'}.oi-vertical-align-top:before{content:'\e0d3'}.oi-video:before{content:'\e0d4'}.oi-volume-high:before{content:'\e0d5'}.oi-volume-low:before{content:'\e0d6'}.oi-volume-off:before{content:'\e0d7'}.oi-warning:before{content:'\e0d8'}.oi-wifi:before{content:'\e0d9'}.oi-wrench:before{content:'\e0da'}.oi-x:before{content:'\e0db'}.oi-yen:before{content:'\e0dc'}.oi-zoom-in:before{content:'\e0dd'}.oi-zoom-out:before{content:'\e0de'} \ No newline at end of file diff --git a/Oqtane.Maui/wwwroot/css/open-iconic/font/fonts/open-iconic.eot b/Oqtane.Maui/wwwroot/css/open-iconic/font/fonts/open-iconic.eot new file mode 100644 index 0000000000000000000000000000000000000000..f98177dbf711863eff7c90f84d5d419d02d99ba8 GIT binary patch literal 28196 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 f%X4~$E_2;^J#ifP;CI~=<%5iE_!YyhznS + + + + +Created by FontForge 20120731 at Tue Jul 1 20:39:22 2014 + By P.J. Onori +Created by P.J. Onori with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Oqtane.Maui/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf b/Oqtane.Maui/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fab604866cd5e55ef4525ea22e420c411f510b01 GIT binary patch literal 28028 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 literal 0 HcmV?d00001 diff --git a/Oqtane.Maui/wwwroot/css/open-iconic/font/fonts/open-iconic.woff b/Oqtane.Maui/wwwroot/css/open-iconic/font/fonts/open-iconic.woff new file mode 100644 index 0000000000000000000000000000000000000000..f9309988aeab3868040d3b322658902098eba27f GIT binary patch literal 14984 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 literal 0 HcmV?d00001 diff --git a/Oqtane.Maui/wwwroot/favicon.ico b/Oqtane.Maui/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..550d600ee8531545eb17aa6d73e63280c6329287 GIT binary patch literal 318 zcmb`9F%Ezr5CjMC0aVt6%GgN4WBiVViQh5tfyi+b7Iq5Ry`9bFz|`-(N8V&$lvyQB zs4@)IVQa3Y+nUd1rtEMX>to}W81#zm#}rKzOxT7wHH4g`hM2Pk=X#^~>ZQOJ-O^Mi Axc~qF literal 0 HcmV?d00001 diff --git a/Oqtane.Maui/wwwroot/images/checked.png b/Oqtane.Maui/wwwroot/images/checked.png new file mode 100644 index 0000000000000000000000000000000000000000..a4100c70a27c17c9da8ae3001183f6c335a2bdda GIT binary patch literal 427 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 Vx%U~ByY>J8002ovPDHLkV1jsB6LSCn literal 0 HcmV?d00001 diff --git a/Oqtane.Maui/wwwroot/images/help.png b/Oqtane.Maui/wwwroot/images/help.png new file mode 100644 index 0000000000000000000000000000000000000000..f380be588a5c9285328484aeabd729734626286e GIT binary patch literal 801 zcmV++1K#|JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vG&=KugC=K=Jss|El70=7v+K~y+TV`M-A zCDjcauU@|LU}R*h`S9_R@vmRMz~XFdtPFwz0%!mJ{oBIJ%d=zJgzg_;2_S$Q(A?Rp zcJ|zbn%}?w#QyvD4=RcZn3$Lt1O)|7OG!#3b+y!A0f~VP0BOE{|U_1sNIt z0~LPx@%_irZ{NSa7ZBk0|M>Bf=Kufy!RooWxt>c)OF2yJYQ4n>a`v4&cW3?l`70JA z$;!&gAR#W=J!?vT8Hf)9X*oqvkDol92xN+Y_(0bz77-RoV*>dZ2F- z$y^3Tp=E1*)mo7FnR6HHe*E|$2v!6HKyNTWJcI?Xv$Nln5ErvwvvmIZkmy8SU?A@P z@#E(lkS1in#LUbLWuk-sKiN4r99p~k1Azgv0vH1>Pzg9-VPRol5)u?V3+1B#V9e+} zc<^ZPeIWk+R#=>f)8 z3zM*r;0~Zkr=j9-08I1Gv(l12f-o>9c0q;VK!BhBw2X}O4(8J*j{OM?4ml1?6oJ4P z;f2aG{QU7#&euOsN?u8g@6FqH*+3xyhzukttE(!9v^Um1gJ-7tmJXe}_a4l9_x^(^ zdPu_n$k`y9C8Z>idRiM0nF$8sQ?ogM0p`KU!BGP=$QbBHusA5Rftl;<*RNk&6crVA f05wCiGXnzviHabpJT*b900000NkvXXu0mjfSXFW4 literal 0 HcmV?d00001 diff --git a/Oqtane.Maui/wwwroot/images/logo-black.png b/Oqtane.Maui/wwwroot/images/logo-black.png new file mode 100644 index 0000000000000000000000000000000000000000..9463cbf0671235087ffed4bb15f2bc9e5d26eeda GIT binary patch literal 8093 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 ZEyo$1+#R*=J79AfLqkPJxdCDq^FMa;ML_@n literal 0 HcmV?d00001 diff --git a/Oqtane.Maui/wwwroot/images/null.png b/Oqtane.Maui/wwwroot/images/null.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f50939ed0601172010cd4a9fe24e40deaf2cfa GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=BeG%-Ex}lN~51S>hT|5}cn_Ql40p%21G)nOCBhms+A=qGzCIXnEz@rWBweJx>?M z5DWk0AOHW`JJ;6!tuHe0(2p?Q$*`pSN<$#C8}EW?j1E#c9F{-@|9Ke7MVA=K*OvML PbuxIm`njxgN@xNACvh`; literal 0 HcmV?d00001 diff --git a/Oqtane.Maui/wwwroot/images/unchecked.png b/Oqtane.Maui/wwwroot/images/unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..566e60a8e19044766052c5859586b5bfec830853 GIT binary patch literal 438 zcmV;n0ZIOeP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E-^XO*0N*(00AaRL_t(IPo0xJYr;SPhVyq?{3oKAh`MKR zS2w>F{YyHCIJtC-v<^a3D3W&YE3sgpO5f%^@n~`vFdd%ZKHleY?-9d%c(k2T>H8(0 zM;4w6g}}whAsCPGF&M}>MZoaI_u=(= za*i;3oXv1rEZ|lua$XS-hR?elylz*F-EtYn=@ci&!CS2s+p852hA;a)ynY|SWO5Bx ztIEDq0b%$j3=ytY+Av8K@UwX`!{^N=wOFk{6n49Fbh0S+aFCt+MG?rh6L%J!P?C5Z zMc|J{;;E8t6Y)CRE!K^OoKpm!!y(+1!pOSS!h5|g$BG~;SAl5;y2X2VjgfVE_OC07*qoM6N<$g1LygEC2ui literal 0 HcmV?d00001 diff --git a/Oqtane.Maui/wwwroot/index.html b/Oqtane.Maui/wwwroot/index.html new file mode 100644 index 00000000..a1469a6b --- /dev/null +++ b/Oqtane.Maui/wwwroot/index.html @@ -0,0 +1,34 @@ + + + + + + Oqtane Maui + + + + + + + + + + + +

+ +
Loading...
+ +
+ An unhandled error has occurred. + Reload + 🗙 +
+ + + + + + + + \ No newline at end of file diff --git a/Oqtane.Maui/wwwroot/js/app.js b/Oqtane.Maui/wwwroot/js/app.js new file mode 100644 index 00000000..2c5d837e --- /dev/null +++ b/Oqtane.Maui/wwwroot/js/app.js @@ -0,0 +1,8 @@ +function subMenu(a) { + event.preventDefault(); + event.stopPropagation(); + + var li = a.parentElement, submenu = li.getElementsByTagName('ul')[0]; + submenu.style.display = submenu.style.display == "block" ? "none" : "block"; + return false; +} \ No newline at end of file diff --git a/Oqtane.Maui/wwwroot/js/interop.js b/Oqtane.Maui/wwwroot/js/interop.js new file mode 100644 index 00000000..b62c006c --- /dev/null +++ b/Oqtane.Maui/wwwroot/js/interop.js @@ -0,0 +1,394 @@ +var Oqtane = Oqtane || {}; + +Oqtane.Interop = { + setCookie: function (name, value, days) { + var d = new Date(); + d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000)); + var expires = "expires=" + d.toUTCString(); + document.cookie = name + "=" + value + ";" + expires + ";path=/"; + }, + getCookie: function (name) { + name = name + "="; + var decodedCookie = decodeURIComponent(document.cookie); + var ca = decodedCookie.split(';'); + for (var i = 0; i < ca.length; i++) { + var c = ca[i]; + while (c.charAt(0) === ' ') { + c = c.substring(1); + } + if (c.indexOf(name) === 0) { + return c.substring(name.length, c.length); + } + } + return ""; + }, + updateTitle: function (title) { + if (document.title !== title) { + document.title = title; + } + }, + includeMeta: function (id, attribute, name, content, key) { + var meta; + if (id !== "" && key === "id") { + meta = document.getElementById(id); + } + else { + meta = document.querySelector("meta[" + attribute + "=\"" + CSS.escape(name) + "\"]"); + } + if (meta === null) { + meta = document.createElement("meta"); + meta.setAttribute(attribute, name); + if (id !== "") { + meta.id = id; + } + meta.content = content; + document.head.appendChild(meta); + } + else { + if (id !== "") { + meta.setAttribute("id", id); + } + if (meta.content !== content) { + meta.setAttribute("content", content); + } + } + }, + includeLink: function (id, rel, href, type, integrity, crossorigin, insertbefore) { + var link = document.querySelector("link[href=\"" + CSS.escape(href) + "\"]"); + if (link === null) { + link = document.createElement("link"); + if (id !== "") { + link.id = id; + } + link.rel = rel; + if (type !== "") { + link.type = type; + } + link.href = href; + if (integrity !== "") { + link.integrity = integrity; + } + if (crossorigin !== "") { + link.crossOrigin = crossorigin; + } + if (insertbefore === "") { + document.head.appendChild(link); + } + else { + var sibling = document.getElementById(insertbefore); + sibling.parentNode.insertBefore(link, sibling); + } + } + else { + if (link.id !== id) { + link.setAttribute('id', id); + } + if (link.rel !== rel) { + link.setAttribute('rel', rel); + } + if (type !== "") { + if (link.type !== type) { + link.setAttribute('type', type); + } + } else { + link.removeAttribute('type'); + } + if (link.href !== this.getAbsoluteUrl(href)) { + link.removeAttribute('integrity'); + link.removeAttribute('crossorigin'); + link.setAttribute('href', href); + } + if (integrity !== "") { + if (link.integrity !== integrity) { + link.setAttribute('integrity', integrity); + } + } else { + link.removeAttribute('integrity'); + } + if (crossorigin !== "") { + if (link.crossOrigin !== crossorigin) { + link.setAttribute('crossorigin', crossorigin); + } + } else { + link.removeAttribute('crossorigin'); + } + } + }, + includeLinks: function (links) { + for (let i = 0; i < links.length; i++) { + this.includeLink(links[i].id, links[i].rel, links[i].href, links[i].type, links[i].integrity, links[i].crossorigin, links[i].insertbefore); + } + }, + includeScript: function (id, src, integrity, crossorigin, content, location) { + var script = document.querySelector("script[src=\"" + CSS.escape(src) + "\"]"); + if (script === null) { + script = document.createElement("script"); + if (id !== "") { + script.id = id; + } + if (src !== "") { + script.src = src; + if (integrity !== "") { + script.integrity = integrity; + } + if (crossorigin !== "") { + script.crossOrigin = crossorigin; + } + } + else { + script.innerHTML = content; + } + script.async = false; + this.addScript(script, location) + .then(() => { + console.log(src + ' loaded'); + }) + .catch(() => { + console.error(src + ' failed'); + }); + } + else { + if (script.id !== id) { + script.setAttribute('id', id); + } + if (src !== "") { + if (script.src !== this.getAbsoluteUrl(src)) { + script.removeAttribute('integrity'); + script.removeAttribute('crossorigin'); + script.src = src; + } + if (integrity !== "") { + if (script.integrity !== integrity) { + script.setAttribute('integrity', integrity); + } + } else { + script.removeAttribute('integrity'); + } + if (crossorigin !== "") { + if (script.crossOrigin !== crossorigin) { + script.setAttribute('crossorigin', crossorigin); + } + } else { + script.removeAttribute('crossorigin'); + } + } + else { + if (script.innerHTML !== content) { + script.innerHTML = content; + } + } + } + }, + addScript: function (script, location) { + if (location === 'head') { + document.head.appendChild(script); + } + if (location === 'body') { + document.body.appendChild(script); + } + + return new Promise((res, rej) => { + script.onload = res(); + script.onerror = rej(); + }); + }, + includeScripts: async function (scripts) { + const bundles = []; + for (let s = 0; s < scripts.length; s++) { + if (scripts[s].bundle === '') { + scripts[s].bundle = scripts[s].href; + } + if (!bundles.includes(scripts[s].bundle)) { + bundles.push(scripts[s].bundle); + } + } + const promises = []; + for (let b = 0; b < bundles.length; b++) { + const urls = []; + for (let s = 0; s < scripts.length; s++) { + if (scripts[s].bundle === bundles[b]) { + urls.push(scripts[s].href); + } + } + promises.push(new Promise((resolve, reject) => { + if (loadjs.isDefined(bundles[b])) { + resolve(true); + } + else { + loadjs(urls, bundles[b], { + async: false, + returnPromise: true, + before: function (path, element) { + for (let s = 0; s < scripts.length; s++) { + if (path === scripts[s].href && scripts[s].integrity !== '') { + element.integrity = scripts[s].integrity; + } + if (path === scripts[s].href && scripts[s].crossorigin !== '') { + element.crossOrigin = scripts[s].crossorigin; + } + if (path === scripts[s].href && scripts[s].es6module === true) { + element.type = "module"; + } + } + } + }) + .then(function () { resolve(true) }) + .catch(function (pathsNotFound) { reject(false) }); + } + })); + } + if (promises.length !== 0) { + await Promise.all(promises); + } + }, + getAbsoluteUrl: function (url) { + var a = document.createElement('a'); + getAbsoluteUrl = function (url) { + a.href = url; + return a.href; + } + return getAbsoluteUrl(url); + }, + removeElementsById: function (prefix, first, last) { + var elements = document.querySelectorAll('[id^=' + prefix + ']'); + for (var i = elements.length - 1; i >= 0; i--) { + var element = elements[i]; + if (element.id.startsWith(prefix) && (first === '' || element.id >= first) && (last === '' || element.id <= last)) { + element.parentNode.removeChild(element); + } + } + }, + getElementByName: function (name) { + var elements = document.getElementsByName(name); + if (elements.length) { + return elements[0].value; + } else { + return ""; + } + }, + submitForm: function (path, fields) { + const form = document.createElement('form'); + form.method = 'post'; + form.action = path; + + for (const key in fields) { + if (fields.hasOwnProperty(key)) { + const hiddenField = document.createElement('input'); + hiddenField.type = 'hidden'; + hiddenField.name = key; + hiddenField.value = fields[key]; + form.appendChild(hiddenField); + } + } + + document.body.appendChild(form); + form.submit(); + }, + getFiles: function (id) { + var files = []; + var fileinput = document.getElementById(id); + if (fileinput !== null) { + for (var i = 0; i < fileinput.files.length; i++) { + files.push(fileinput.files[i].name); + } + } + return files; + }, + uploadFiles: function (posturl, folder, id, antiforgerytoken) { + var fileinput = document.getElementById(id + 'FileInput'); + var files = fileinput.files; + var progressinfo = document.getElementById(id + 'ProgressInfo'); + var progressbar = document.getElementById(id + 'ProgressBar'); + + progressinfo.setAttribute("style", "display: inline;"); + progressbar.setAttribute("style", "width: 200px; display: inline;"); + + for (var i = 0; i < files.length; i++) { + var FileChunk = []; + var file = files[i]; + var MaxFileSizeMB = 1; + var BufferChunkSize = MaxFileSizeMB * (1024 * 1024); + var FileStreamPos = 0; + var EndPos = BufferChunkSize; + var Size = file.size; + + while (FileStreamPos < Size) { + FileChunk.push(file.slice(FileStreamPos, EndPos)); + FileStreamPos = EndPos; + EndPos = FileStreamPos + BufferChunkSize; + } + + var TotalParts = FileChunk.length; + var PartCount = 0; + + while (Chunk = FileChunk.shift()) { + PartCount++; + var FileName = file.name + ".part_" + PartCount.toString().padStart(3, '0') + "_" + TotalParts.toString().padStart(3, '0'); + + var data = new FormData(); + data.append('__RequestVerificationToken', antiforgerytoken); + data.append('folder', folder); + data.append('formfile', Chunk, FileName); + var request = new XMLHttpRequest(); + request.open('POST', posturl, true); + request.upload.onloadstart = function (e) { + progressinfo.innerHTML = file.name + ' 0%'; + progressbar.value = 0; + }; + request.upload.onprogress = function (e) { + var percent = Math.ceil((e.loaded / e.total) * 100); + progressinfo.innerHTML = file.name + '[' + PartCount + '] ' + percent + '%'; + progressbar.value = (percent / 100); + }; + request.upload.onloadend = function (e) { + progressinfo.innerHTML = file.name + ' 100%'; + progressbar.value = 1; + }; + request.upload.onerror = function () { + progressinfo.innerHTML = file.name + ' Error: ' + xhr.status; + progressbar.value = 0; + }; + request.send(data); + } + + if (i === files.length - 1) { + fileinput.value = ''; + } + } + }, + refreshBrowser: function (reload, wait) { + setInterval(function () { + window.location.reload(reload); + }, wait * 1000); + }, + redirectBrowser: function (url, wait) { + setInterval(function () { + window.location.href = url; + }, wait * 1000); + }, + formValid: function (formRef) { + return formRef.checkValidity(); + }, + setElementAttribute: function (id, attribute, value) { + var element = document.getElementById(id); + if (element !== null) { + element.setAttribute(attribute, value); + } + }, + scrollTo: function (top, left, behavior) { + window.scrollTo({ + top: top, + left: left, + behavior: behavior + }); + }, + scrollToId: function (id) { + var element = document.getElementById(id); + if (element instanceof HTMLElement) { + element.scrollIntoView({ + behavior: "smooth", + block: "start", + inline: "nearest" + }); + } +}}; diff --git a/Oqtane.Maui/wwwroot/js/loadjs.min.js b/Oqtane.Maui/wwwroot/js/loadjs.min.js new file mode 100644 index 00000000..b2165fc3 --- /dev/null +++ b/Oqtane.Maui/wwwroot/js/loadjs.min.js @@ -0,0 +1 @@ +loadjs=function(){var h=function(){},c={},u={},f={};function o(e,n){if(e){var r=f[e];if(u[e]=n,r)for(;r.length;)r[0](e,n),r.splice(0,1)}}function l(e,n){e.call&&(e={success:e}),n.length?(e.error||h)(n):(e.success||h)(e)}function d(r,t,s,i){var c,o,e=document,n=s.async,u=(s.numRetries||0)+1,f=s.before||h,l=r.replace(/[\?|#].*$/,""),a=r.replace(/^(css|img)!/,"");i=i||0,/(^css!|\.css$)/.test(l)?((o=e.createElement("link")).rel="stylesheet",o.href=a,(c="hideFocus"in o)&&o.relList&&(c=0,o.rel="preload",o.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(l)?(o=e.createElement("img")).src=a:((o=e.createElement("script")).src=r,o.async=void 0===n||n),!(o.onload=o.onerror=o.onbeforeload=function(e){var n=e.type[0];if(c)try{o.sheet.cssText.length||(n="e")}catch(e){18!=e.code&&(n="e")}if("e"==n){if((i+=1)25)zKQoRkI<5;6esJrM&9@g5u#oQ?Q+;iMt^8L0wH zv4{A9YW7L_6B1H&%&P~(mx$k(_Hx=zNJxYZÃi=NR)NY_vDQlGxM>mM$mr_g_^ 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 literal 0 HcmV?d00001 diff --git a/Oqtane.Server/Controllers/UserController.cs b/Oqtane.Server/Controllers/UserController.cs index da38900e..7fe5ca8e 100644 --- a/Oqtane.Server/Controllers/UserController.cs +++ b/Oqtane.Server/Controllers/UserController.cs @@ -315,7 +315,7 @@ namespace Oqtane.Controllers // POST api//login [HttpPost("login")] - public async Task Login([FromBody] User user) + public async Task Login([FromBody] User user, bool setCookie, bool isPersistent) { User loginUser = new User { SiteId = user.SiteId, Username = user.Username, IsAuthenticated = false }; @@ -358,6 +358,11 @@ namespace Oqtane.Controllers loginUser.LastIPAddress = LastIPAddress; _users.UpdateUser(loginUser); _logger.Log(LogLevel.Information, this, LogFunction.Security, "User Login Successful {Username}", user.Username); + + if (setCookie) + { + await _identitySignInManager.SignInAsync(identityuser, isPersistent); + } } else { diff --git a/Oqtane.Server/Infrastructure/TenantManager.cs b/Oqtane.Server/Infrastructure/TenantManager.cs index de3ca94e..8ebcc20d 100644 --- a/Oqtane.Server/Infrastructure/TenantManager.cs +++ b/Oqtane.Server/Infrastructure/TenantManager.cs @@ -32,11 +32,12 @@ namespace Oqtane.Infrastructure else { // if there is http context - if (_httpContextAccessor.HttpContext != null) + var httpcontext = _httpContextAccessor.HttpContext; + if (httpcontext != null) { // legacy support for client api requests which would include the alias as a path prefix ( ie. {alias}/api/[controller] ) int aliasId; - string[] segments = _httpContextAccessor.HttpContext.Request.Path.Value.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); + string[] segments = httpcontext.Request.Path.Value.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); if (segments.Length > 1 && (segments[1] == "api" || segments[1] == "pages") && int.TryParse(segments[0], out aliasId)) { alias = _aliasRepository.GetAliases().ToList().FirstOrDefault(item => item.AliasId == aliasId); @@ -45,13 +46,19 @@ namespace Oqtane.Infrastructure // resolve alias based on host name and path if (alias == null) { - string name = _httpContextAccessor.HttpContext.Request.Host.Value + _httpContextAccessor.HttpContext.Request.Path; + string name = httpcontext.Request.Host.Value + httpcontext.Request.Path; alias = _aliasRepository.GetAlias(name); } // if there is a match save it if (alias != null) { + alias.Protocol = (httpcontext.Request.IsHttps) ? "https://" : "http://"; + alias.BaseUrl = ""; + if (httpcontext.Request.Headers.ContainsKey("User-Agent") && httpcontext.Request.Headers["User-Agent"] == Shared.Constants.MauiUserAgent) + { + alias.BaseUrl = alias.Protocol + alias.Name; + } _siteState.Alias = alias; } } diff --git a/Oqtane.Server/Pages/_Host.cshtml b/Oqtane.Server/Pages/_Host.cshtml index 394dd296..17ffe457 100644 --- a/Oqtane.Server/Pages/_Host.cshtml +++ b/Oqtane.Server/Pages/_Host.cshtml @@ -27,7 +27,7 @@ { @(Html.AntiForgeryToken()) - +
diff --git a/Oqtane.Server/Pages/_Host.cshtml.cs b/Oqtane.Server/Pages/_Host.cshtml.cs index 25f57884..76825fbc 100644 --- a/Oqtane.Server/Pages/_Host.cshtml.cs +++ b/Oqtane.Server/Pages/_Host.cshtml.cs @@ -8,7 +8,6 @@ using System.Reflection; using Oqtane.Repository; using Microsoft.AspNetCore.Localization; using Microsoft.Extensions.Configuration; -using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Antiforgery; using Microsoft.AspNetCore.Http.Extensions; using Microsoft.AspNetCore.Mvc; @@ -61,7 +60,7 @@ namespace Oqtane.Pages public string AntiForgeryToken = ""; public string AuthorizationToken = ""; public string Runtime = "Server"; - public RenderMode RenderMode = RenderMode.Server; + public string RenderMode = "ServerPrerendered"; public int VisitorId = -1; public string RemoteIPAddress = ""; public string HeadResources = ""; @@ -84,7 +83,7 @@ namespace Oqtane.Pages if (_configuration.GetSection("RenderMode").Exists()) { - RenderMode = (RenderMode)Enum.Parse(typeof(RenderMode), _configuration.GetSection("RenderMode").Value, true); + RenderMode = _configuration.GetSection("RenderMode").Value; } // if framework is installed @@ -123,7 +122,7 @@ namespace Oqtane.Pages } if (!string.IsNullOrEmpty(site.RenderMode)) { - RenderMode = (RenderMode)Enum.Parse(typeof(RenderMode), site.RenderMode, true); + RenderMode = site.RenderMode; } if (site.FaviconFileId != null) { @@ -242,7 +241,8 @@ namespace Oqtane.Pages try { // get request attributes - string useragent = (Request.Headers[HeaderNames.UserAgent] != StringValues.Empty) ? Request.Headers[HeaderNames.UserAgent].ToString().Substring(0,256) : "(none)"; + string useragent = (Request.Headers[HeaderNames.UserAgent] != StringValues.Empty) ? Request.Headers[HeaderNames.UserAgent] : "(none)"; + useragent = (useragent.Length > 256) ? useragent.Substring(0, 256) : useragent; string language = (Request.Headers[HeaderNames.AcceptLanguage] != StringValues.Empty) ? Request.Headers[HeaderNames.AcceptLanguage] : ""; language = (language.Contains(",")) ? language.Substring(0, language.IndexOf(",")) : language; language = (language.Contains(";")) ? language.Substring(0, language.IndexOf(";")) : language; diff --git a/Oqtane.Server/Repository/FileRepository.cs b/Oqtane.Server/Repository/FileRepository.cs index 4ac5403c..dba0d491 100644 --- a/Oqtane.Server/Repository/FileRepository.cs +++ b/Oqtane.Server/Repository/FileRepository.cs @@ -112,7 +112,7 @@ namespace Oqtane.Repository url = Utilities.ContentUrl(alias, file.FileId); break; case FolderTypes.Public: - url = "/" + Utilities.UrlCombine("Content", "Tenants", alias.TenantId.ToString(), "Sites", file.Folder.SiteId.ToString(), file.Folder.Path) + file.Name; + url = alias.BaseUrl + Utilities.UrlCombine("Content", "Tenants", alias.TenantId.ToString(), "Sites", file.Folder.SiteId.ToString(), file.Folder.Path) + file.Name; break; } return url; diff --git a/Oqtane.Server/Security/AutoValidateAntiforgeryTokenFilter.cs b/Oqtane.Server/Security/AutoValidateAntiforgeryTokenFilter.cs index 5efe69fc..8652ce89 100644 --- a/Oqtane.Server/Security/AutoValidateAntiforgeryTokenFilter.cs +++ b/Oqtane.Server/Security/AutoValidateAntiforgeryTokenFilter.cs @@ -51,7 +51,7 @@ namespace Oqtane.Security protected virtual bool ShouldValidate(AuthorizationFilterContext context) { // ignore antiforgery validation if a bearer token was provided - if (context.HttpContext.Request.Headers.ContainsKey("Authorization")) + if (context.HttpContext.Request.Headers.ContainsKey("Authorization") || context.HttpContext.Request.Headers["User-Agent"] == Constants.MauiUserAgent) { return false; } diff --git a/Oqtane.Shared/Enums/Runtime.cs b/Oqtane.Shared/Enums/Runtime.cs index 4cca8235..3758b765 100644 --- a/Oqtane.Shared/Enums/Runtime.cs +++ b/Oqtane.Shared/Enums/Runtime.cs @@ -3,6 +3,7 @@ namespace Oqtane.Shared public enum Runtime { Server, - WebAssembly + WebAssembly, + Hybrid } } diff --git a/Oqtane.Shared/Models/Alias.cs b/Oqtane.Shared/Models/Alias.cs index 70e1c886..c3697be0 100644 --- a/Oqtane.Shared/Models/Alias.cs +++ b/Oqtane.Shared/Models/Alias.cs @@ -82,9 +82,15 @@ namespace Oqtane.Models } /// - /// Site-specific settings (only available on the server via HttpContext for security reasons) + /// Protocol for the request from which the alias was resolved (ie. http or https ) /// - //[NotMapped] - //public Dictionary SiteSettings { get; set; } + [NotMapped] + public string Protocol { get; set; } + + /// + /// Base Url for static resources (note that this will only be set for remote clients) + /// + [NotMapped] + public string BaseUrl { get; set; } } } diff --git a/Oqtane.Shared/Shared/Constants.cs b/Oqtane.Shared/Shared/Constants.cs index 627a57e4..350b6f52 100644 --- a/Oqtane.Shared/Shared/Constants.cs +++ b/Oqtane.Shared/Shared/Constants.cs @@ -89,5 +89,8 @@ namespace Oqtane.Shared public static readonly string HttpContextAliasKey = "Alias"; public static readonly string HttpContextSiteSettingsKey = "SiteSettings"; + + public static readonly string MauiUserAgent = "MAUI"; + } } diff --git a/Oqtane.Shared/Shared/Utilities.cs b/Oqtane.Shared/Shared/Utilities.cs index 89b33341..db3b439c 100644 --- a/Oqtane.Shared/Shared/Utilities.cs +++ b/Oqtane.Shared/Shared/Utilities.cs @@ -108,7 +108,7 @@ namespace Oqtane.Shared var aliasUrl = (alias != null && !string.IsNullOrEmpty(alias.Path)) ? "/" + alias.Path : ""; var method = asAttachment ? "/attach" : ""; - return $"{aliasUrl}{Constants.ContentUrl}{fileId}{method}"; + return $"{alias.BaseUrl}{aliasUrl}{Constants.ContentUrl}{fileId}{method}"; } public static string ImageUrl(Alias alias, int fileId, int width, int height, string mode) @@ -118,17 +118,18 @@ namespace Oqtane.Shared public static string ImageUrl(Alias alias, int fileId, int width, int height, string mode, string position, string background, int rotate, bool recreate) { - var aliasUrl = (alias != null && !string.IsNullOrEmpty(alias.Path)) ? "/" + alias.Path : ""; + var url = (alias != null && !string.IsNullOrEmpty(alias.Path)) ? "/" + alias.Path : ""; mode = string.IsNullOrEmpty(mode) ? "crop" : mode; position = string.IsNullOrEmpty(position) ? "center" : position; background = string.IsNullOrEmpty(background) ? "000000" : background; - return $"{aliasUrl}{Constants.ImageUrl}{fileId}/{width}/{height}/{mode}/{position}/{background}/{rotate}/{recreate}"; + return $"{alias.BaseUrl}{url}{Constants.ImageUrl}{fileId}/{width}/{height}/{mode}/{position}/{background}/{rotate}/{recreate}"; } public static string TenantUrl(Alias alias, string url) { url = (!url.StartsWith("/")) ? "/" + url : url; - return (alias != null && !string.IsNullOrEmpty(alias.Path)) ? "/" + alias.Path + url : url; + url = (alias != null && !string.IsNullOrEmpty(alias.Path)) ? "/" + alias.Path + url : url; + return $"{alias.BaseUrl}{url}"; } public static string FormatContent(string content, Alias alias, string operation) diff --git a/Oqtane.sln b/Oqtane.sln index f82fa77c..2ef03009 100644 --- a/Oqtane.sln +++ b/Oqtane.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28822.285 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32611.2 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Oqtane.Server", "Oqtane.Server\Oqtane.Server.csproj", "{083BB22D-DF24-43A2-95E5-8F385CCB3318}" EndProject