aboutsummaryrefslogtreecommitdiff
path: root/VNLib.Plugins.Essentials.Accounts.Admin
diff options
context:
space:
mode:
Diffstat (limited to 'VNLib.Plugins.Essentials.Accounts.Admin')
-rw-r--r--VNLib.Plugins.Essentials.Accounts.Admin/AccountAdminEntry.cs91
-rw-r--r--VNLib.Plugins.Essentials.Accounts.Admin/Endpoints/UsersEndpoint.cs101
-rw-r--r--VNLib.Plugins.Essentials.Accounts.Admin/Helpers/LocalNetworkProtectedEndpoint.cs54
-rw-r--r--VNLib.Plugins.Essentials.Accounts.Admin/Model/User.cs50
-rw-r--r--VNLib.Plugins.Essentials.Accounts.Admin/Model/UserContext.cs40
-rw-r--r--VNLib.Plugins.Essentials.Accounts.Admin/Model/UserStore.cs72
-rw-r--r--VNLib.Plugins.Essentials.Accounts.Admin/VNLib.Plugins.Essentials.Accounts.Admin.csproj38
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>