diff options
Diffstat (limited to 'VNLib.Plugins.Essentials.Accounts.Admin')
7 files changed, 0 insertions, 446 deletions
diff --git a/VNLib.Plugins.Essentials.Accounts.Admin/AccountAdminEntry.cs b/VNLib.Plugins.Essentials.Accounts.Admin/AccountAdminEntry.cs deleted file mode 100644 index ee83a17..0000000 --- a/VNLib.Plugins.Essentials.Accounts.Admin/AccountAdminEntry.cs +++ /dev/null @@ -1,91 +0,0 @@ -/* -* Copyright (c) 2022 Vaughn Nugent -* -* Library: VNLib -* Package: VNLib.Plugins.Essentials.Accounts.Admin -* File: AccountAdminEntry.cs -* -* AccountAdminEntry.cs is part of VNLib.Plugins.Essentials.Accounts.Admin which is part of the larger -* VNLib collection of libraries and utilities. -* -* VNLib.Plugins.Essentials.Accounts.Admin is free software: you can redistribute it and/or modify -* it under the terms of the GNU Affero General Public License as -* published by the Free Software Foundation, either version 3 of the -* License, or (at your option) any later version. -* -* VNLib.Plugins.Essentials.Accounts.Admin is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public License -* along with this program. If not, see https://www.gnu.org/licenses/. -*/ - -using System; -using System.Text.Json; -using System.Runtime.CompilerServices; - -using VNLib.Utils.Logging; -using VNLib.Plugins.Essentials.Sessions; - -namespace VNLib.Plugins.Essentials.Accounts.Admin -{ - - internal static class Constants - { - public const ushort ADMIN_GROUP_ID = 0x1fff; - [Flags] - enum AdminLevelMask - { - - } - /// <summary> - /// Determines if the current session belongs to an admin account - /// </summary> - /// <param name="session"></param> - /// <returns>True if the current user has administrator permissions</returns> - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool IsAdmin(this in SessionInfo session) => session.HasGroup(ADMIN_GROUP_ID); - - /// <summary> - /// Gets the plugin config local-only flag - /// </summary> - /// <param name="plugin"></param> - /// <returns>True if the config demands all requests happen on the local network only</returns> - public static bool LocalOnlyEnabled(this PluginBase plugin) - { - return plugin.PluginConfig.TryGetProperty("local_only", out JsonElement el) && el.GetBoolean(); - } - } - - public sealed class AccountAdminEntry : PluginBase - { - public override string PluginName => "Essentials.Admin"; - - protected override void OnLoad() - { - try - { - - } - catch (KeyNotFoundException knf) - { - Log.Error("Missing required account configuration variables {mess}", knf.Message); - return; - } - //Write loaded to log - Log.Information("Plugin loaded"); - } - - protected override void OnUnLoad() - { - Log.Information("Plugin unloaded"); - } - - protected override void ProcessHostCommand(string cmd) - { - Log.Debug(cmd); - } - } -}
\ No newline at end of file diff --git a/VNLib.Plugins.Essentials.Accounts.Admin/Endpoints/UsersEndpoint.cs b/VNLib.Plugins.Essentials.Accounts.Admin/Endpoints/UsersEndpoint.cs deleted file mode 100644 index 66e5e1e..0000000 --- a/VNLib.Plugins.Essentials.Accounts.Admin/Endpoints/UsersEndpoint.cs +++ /dev/null @@ -1,101 +0,0 @@ -/* -* Copyright (c) 2022 Vaughn Nugent -* -* Library: VNLib -* Package: VNLib.Plugins.Essentials.Accounts.Admin -* File: UsersEndpoint.cs -* -* UsersEndpoint.cs is part of VNLib.Plugins.Essentials.Accounts.Admin which is part of the larger -* VNLib collection of libraries and utilities. -* -* VNLib.Plugins.Essentials.Accounts.Admin is free software: you can redistribute it and/or modify -* it under the terms of the GNU Affero General Public License as -* published by the Free Software Foundation, either version 3 of the -* License, or (at your option) any later version. -* -* VNLib.Plugins.Essentials.Accounts.Admin is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public License -* along with this program. If not, see https://www.gnu.org/licenses/. -*/ - -using System; -using System.Linq; -using System.Net; -using System.Text.Json; - -using VNLib.Utils; -using VNLib.Plugins.Essentials.Users; -using VNLib.Plugins.Essentials.Extensions; -using VNLib.Plugins.Essentials.Accounts.Admin.Model; -using VNLib.Plugins.Extensions.Data; -using VNLib.Plugins.Extensions.Loading.Sql; -using VNLib.Plugins.Extensions.Loading.Users; -using VNLib.Plugins.Essentials.Accounts.Admin.Helpers; -using VNLib.Plugins.Extensions.Loading; - -namespace VNLib.Plugins.Essentials.Accounts.Admin.Endpoints -{ - [ConfigurationName("users")] - internal class UsersEndpoint : LocalNetworkProtectedEndpoint - { - - readonly IUserManager Manager; - readonly UserStore UserStore; - - public UsersEndpoint(PluginBase plugin, Dictionary<string, JsonElement> config) - { - this.LocalOnly = plugin.LocalOnlyEnabled(); - string? path = config["path"].GetString(); - //Store user-manager - Manager = plugin.GetUserManager(); - //Create the indirect user context store - UserStore = new(plugin.GetContextOptions()); - - InitPathAndLog(path, plugin.Log); - } - - - protected override ERRNO PreProccess(HttpEntity entity) - { - return base.PreProccess(entity) && entity.Session.IsAdmin(); - } - - protected override async ValueTask<VfReturnType> GetAsync(HttpEntity entity) - { - //Get single account - if(entity.QueryArgs.TryGetNonEmptyValue("id", out string? userId)) - { - //Load account - using IUser? user = await Manager.GetUserFromIDAsync(userId); - AccountData? acc = user?.GetProfile(); - //If account not found, return 404 - if(acc == null) - { - entity.CloseResponse(HttpStatusCode.NotFound); - } - else - { - entity.CloseResponseJson(HttpStatusCode.OK, acc); - } - } - else - { - //Get a user page - int page = entity.QueryArgs.GetPageOrDefault(0); - int limit = entity.QueryArgs.GetLimitOrDefault(50, 0, 200); - //Rent list and get the requested page - List<User> rental = UserStore.ListRental.Rent(); - _ = await UserStore.GetPageAsync(rental, page, limit); - //Set response - entity.CloseResponseJson(HttpStatusCode.OK, rental); - //Return list to store - UserStore.ListRental.Return(rental); - } - return VfReturnType.VirtualSkip; - } - } -} diff --git a/VNLib.Plugins.Essentials.Accounts.Admin/Helpers/LocalNetworkProtectedEndpoint.cs b/VNLib.Plugins.Essentials.Accounts.Admin/Helpers/LocalNetworkProtectedEndpoint.cs deleted file mode 100644 index 1456769..0000000 --- a/VNLib.Plugins.Essentials.Accounts.Admin/Helpers/LocalNetworkProtectedEndpoint.cs +++ /dev/null @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2022 Vaughn Nugent -* -* Library: VNLib -* Package: VNLib.Plugins.Essentials.Accounts.Admin -* File: LocalNetworkProtectedEndpoint.cs -* -* LocalNetworkProtectedEndpoint.cs is part of VNLib.Plugins.Essentials.Accounts.Admin which is part of the larger -* VNLib collection of libraries and utilities. -* -* VNLib.Plugins.Essentials.Accounts.Admin is free software: you can redistribute it and/or modify -* it under the terms of the GNU Affero General Public License as -* published by the Free Software Foundation, either version 3 of the -* License, or (at your option) any later version. -* -* VNLib.Plugins.Essentials.Accounts.Admin is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public License -* along with this program. If not, see https://www.gnu.org/licenses/. -*/ - -using System; - -using VNLib.Utils; -using VNLib.Plugins.Essentials.Endpoints; - -namespace VNLib.Plugins.Essentials.Accounts.Admin.Helpers -{ - /// <summary> - /// Provides an endpoint that provides optional protection against requests outside the local network - /// </summary> - internal abstract class LocalNetworkProtectedEndpoint : ProtectedWebEndpoint - { - private bool _localOnly; - - /// <summary> - /// Specifies if requests outside of the local network are allowed. - /// </summary> - protected bool LocalOnly - { - get => _localOnly; - set => _localOnly = value; - } - - protected override ERRNO PreProccess(HttpEntity entity) - { - return (!_localOnly || entity.IsLocalConnection) && base.PreProccess(entity); - } - - } -} diff --git a/VNLib.Plugins.Essentials.Accounts.Admin/Model/User.cs b/VNLib.Plugins.Essentials.Accounts.Admin/Model/User.cs deleted file mode 100644 index 96fdf69..0000000 --- a/VNLib.Plugins.Essentials.Accounts.Admin/Model/User.cs +++ /dev/null @@ -1,50 +0,0 @@ -/* -* Copyright (c) 2022 Vaughn Nugent -* -* Library: VNLib -* Package: VNLib.Plugins.Essentials.Accounts.Admin -* File: User.cs -* -* User.cs is part of VNLib.Plugins.Essentials.Accounts.Admin which is part of the larger -* VNLib collection of libraries and utilities. -* -* VNLib.Plugins.Essentials.Accounts.Admin is free software: you can redistribute it and/or modify -* it under the terms of the GNU Affero General Public License as -* published by the Free Software Foundation, either version 3 of the -* License, or (at your option) any later version. -* -* VNLib.Plugins.Essentials.Accounts.Admin is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public License -* along with this program. If not, see https://www.gnu.org/licenses/. -*/ - -using System; -using System.ComponentModel.DataAnnotations.Schema; - -using VNLib.Plugins.Extensions.Data; -using VNLib.Plugins.Extensions.Data.Abstractions; - -namespace VNLib.Plugins.Essentials.Accounts.Admin.Model -{ - internal class User : DbModelBase, IUserEntity - { - public string? UserId { get; set; } - //Users's do not have unique id values - [NotMapped] - public override string Id - { - get => UserId!; - set => UserId = value; - } - public override DateTime Created { get; set; } - //Do not map the last modified, user table does not have a last modified field. - [NotMapped] - public override DateTime LastModified { get; set; } - - public ulong Privilages { get; set; } - } -} diff --git a/VNLib.Plugins.Essentials.Accounts.Admin/Model/UserContext.cs b/VNLib.Plugins.Essentials.Accounts.Admin/Model/UserContext.cs deleted file mode 100644 index adc7ffc..0000000 --- a/VNLib.Plugins.Essentials.Accounts.Admin/Model/UserContext.cs +++ /dev/null @@ -1,40 +0,0 @@ -/* -* Copyright (c) 2022 Vaughn Nugent -* -* Library: VNLib -* Package: VNLib.Plugins.Essentials.Accounts.Admin -* File: UserContext.cs -* -* UserContext.cs is part of VNLib.Plugins.Essentials.Accounts.Admin which is part of the larger -* VNLib collection of libraries and utilities. -* -* VNLib.Plugins.Essentials.Accounts.Admin is free software: you can redistribute it and/or modify -* it under the terms of the GNU Affero General Public License as -* published by the Free Software Foundation, either version 3 of the -* License, or (at your option) any later version. -* -* VNLib.Plugins.Essentials.Accounts.Admin is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public License -* along with this program. If not, see https://www.gnu.org/licenses/. -*/ - -using Microsoft.EntityFrameworkCore; - -using VNLib.Plugins.Extensions.Data; - -namespace VNLib.Plugins.Essentials.Accounts.Admin.Model -{ - internal class UserContext : TransactionalDbContext - { - public DbSet<User> Users { get; set; } -#nullable disable - public UserContext(DbContextOptions options):base(options) - { - - } - } -} diff --git a/VNLib.Plugins.Essentials.Accounts.Admin/Model/UserStore.cs b/VNLib.Plugins.Essentials.Accounts.Admin/Model/UserStore.cs deleted file mode 100644 index 3dc64ec..0000000 --- a/VNLib.Plugins.Essentials.Accounts.Admin/Model/UserStore.cs +++ /dev/null @@ -1,72 +0,0 @@ -/* -* Copyright (c) 2022 Vaughn Nugent -* -* Library: VNLib -* Package: VNLib.Plugins.Essentials.Accounts.Admin -* File: UserStore.cs -* -* UserStore.cs is part of VNLib.Plugins.Essentials.Accounts.Admin which is part of the larger -* VNLib collection of libraries and utilities. -* -* VNLib.Plugins.Essentials.Accounts.Admin is free software: you can redistribute it and/or modify -* it under the terms of the GNU Affero General Public License as -* published by the Free Software Foundation, either version 3 of the -* License, or (at your option) any later version. -* -* VNLib.Plugins.Essentials.Accounts.Admin is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public License -* along with this program. If not, see https://www.gnu.org/licenses/. -*/ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -using Microsoft.EntityFrameworkCore; - -using VNLib.Plugins.Extensions.Data; - -namespace VNLib.Plugins.Essentials.Accounts.Admin.Model -{ - - internal class UserStore : DbStore<User> - { - private readonly DbContextOptions Options; - - public UserStore(DbContextOptions options) - { - this.Options = options; - } - - //Item id's are not used - public override string RecordIdBuilder => ""; - - protected override IQueryable<User> GetCollectionQueryBuilder(TransactionalDbContext context, params string[] constraints) - { - return (from user in context.Set<User>() - orderby user.Created descending - select user); - } - - protected override IQueryable<User> GetSingleQueryBuilder(TransactionalDbContext context, params string[] constraints) - { - string userId = constraints[0]; - return (from user in context.Set<User>() - where user.UserId == userId - select user); - } - - public override TransactionalDbContext NewContext() => new UserContext(Options); - - protected override void OnRecordUpdate(User newRecord, User currentRecord) - { - currentRecord.Privilages = currentRecord.Privilages; - } - } -} diff --git a/VNLib.Plugins.Essentials.Accounts.Admin/VNLib.Plugins.Essentials.Accounts.Admin.csproj b/VNLib.Plugins.Essentials.Accounts.Admin/VNLib.Plugins.Essentials.Accounts.Admin.csproj deleted file mode 100644 index 2bb4a38..0000000 --- a/VNLib.Plugins.Essentials.Accounts.Admin/VNLib.Plugins.Essentials.Accounts.Admin.csproj +++ /dev/null @@ -1,38 +0,0 @@ -<Project Sdk="Microsoft.NET.Sdk"> - - <PropertyGroup> - <TargetFramework>net6.0</TargetFramework> - <ImplicitUsings>enable</ImplicitUsings> - <Nullable>enable</Nullable> - <AnalysisLevel>latest-all</AnalysisLevel> - <SignAssembly>True</SignAssembly> - <AssemblyOriginatorKeyFile>\\vaughnnugent.com\Internal\Folder Redirection\vman\Documents\Programming\Software\StrongNameingKey.snk</AssemblyOriginatorKeyFile> - </PropertyGroup> - - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> - <Deterministic>False</Deterministic> - </PropertyGroup> - - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> - <Deterministic>False</Deterministic> - </PropertyGroup> - - <ItemGroup> - <PackageReference Include="ErrorProne.NET.CoreAnalyzers" Version="0.1.2"> - <PrivateAssets>all</PrivateAssets> - <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> - </PackageReference> - <PackageReference Include="ErrorProne.NET.Structs" Version="0.1.2"> - <PrivateAssets>all</PrivateAssets> - <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> - </PackageReference> - </ItemGroup> - - <ItemGroup> - <ProjectReference Include="..\..\..\VNLib\Essentials\src\VNLib.Plugins.Essentials.csproj" /> - <ProjectReference Include="..\..\Extensions\VNLib.Plugins.Extensions.Data\VNLib.Plugins.Extensions.Data.csproj" /> - <ProjectReference Include="..\..\Extensions\VNLib.Plugins.Extensions.Loading.Sql\VNLib.Plugins.Extensions.Loading.Sql.csproj" /> - <ProjectReference Include="..\..\PluginBase\VNLib.Plugins.PluginBase.csproj" /> - </ItemGroup> - -</Project> |