Recreated solution with web app template. Improved theme. Switched to ShadcnBlazor library
This commit is contained in:
@@ -1,15 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Admin.ApiKeys;
|
||||
|
||||
public class CreateApiKeyRequest
|
||||
{
|
||||
[Required(ErrorMessage = "You need to specify a description")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to specify permissions for the api key")]
|
||||
public string[] Permissions { get; set; } = [];
|
||||
|
||||
[Required(ErrorMessage = "You need to specify an expire date")]
|
||||
public DateTime ExpiresAt { get; set; } = DateTime.UtcNow.AddDays(30);
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Admin.ApiKeys;
|
||||
|
||||
public class UpdateApiKeyRequest
|
||||
{
|
||||
[Required(ErrorMessage = "You need to specify a description")]
|
||||
public string Description { get; set; }
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Admin.Sys.Files;
|
||||
|
||||
public class CombineRequest
|
||||
{
|
||||
[Required(ErrorMessage = "Destination is required")]
|
||||
public string Destination { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "Files are required")]
|
||||
public string[] Files { get; set; }
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Admin.Sys.Files;
|
||||
|
||||
public class CompressRequest
|
||||
{
|
||||
[Required(ErrorMessage = "Format is required")]
|
||||
public string Format { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "Destination is required")]
|
||||
public string Destination { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "Root is required")]
|
||||
public string Root { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "Items are required")]
|
||||
public string[] Items { get; set; }
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Admin.Sys.Files;
|
||||
|
||||
public class DecompressRequest
|
||||
{
|
||||
[Required(ErrorMessage = "You need to provide a format")]
|
||||
public string Format { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide a path")]
|
||||
public string Path { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide a destination")]
|
||||
public string Destination { get; set; }
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Admin.Sys;
|
||||
|
||||
public class GenerateDiagnoseRequest
|
||||
{
|
||||
[Required(ErrorMessage = "You need to define providers")]
|
||||
public string[] Providers { get; set; } = [];
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Moonlight.Shared.Misc;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Admin.Sys.Theme;
|
||||
|
||||
public class CreateThemeRequest
|
||||
{
|
||||
[Required(ErrorMessage = "You need to provide a name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide an author")]
|
||||
public string Author { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide a version")]
|
||||
public string Version { get; set; }
|
||||
|
||||
public string? UpdateUrl { get; set; }
|
||||
public string? DonateUrl { get; set; }
|
||||
|
||||
public ApplicationTheme Content { get; set; } = new();
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Moonlight.Shared.Misc;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Admin.Sys.Theme;
|
||||
|
||||
public class UpdateThemeRequest
|
||||
{
|
||||
public bool IsEnabled { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide a name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide an author")]
|
||||
public string Author { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide a version")]
|
||||
public string Version { get; set; }
|
||||
|
||||
public string? UpdateUrl { get; set; }
|
||||
public string? DonateUrl { get; set; }
|
||||
|
||||
public ApplicationTheme Content { get; set; }
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Admin.Users;
|
||||
|
||||
public class CreateUserRequest
|
||||
{
|
||||
[Required(ErrorMessage = "You need to provide an email address")]
|
||||
[EmailAddress(ErrorMessage = "You need to provide a valid email address")]
|
||||
public string Email { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide a username")]
|
||||
[RegularExpression("^[a-z][a-z0-9]*$", ErrorMessage = "Usernames can only contain lowercase characters and numbers and should not start with a number")]
|
||||
public string Username { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide a password")]
|
||||
[MinLength(8, ErrorMessage = "Your password needs to be at least 8 characters long")]
|
||||
[MaxLength(256, ErrorMessage = "Your password should not exceed the length of 256 characters")]
|
||||
public string Password { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide permissions")]
|
||||
public string[] Permissions { get; set; } = [];
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Admin.Users;
|
||||
|
||||
public class UpdateUserRequest
|
||||
{
|
||||
[Required(ErrorMessage = "You need to provide an email address")]
|
||||
[EmailAddress(ErrorMessage = "You need to provide a valid email address")]
|
||||
public string Email { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide a username")]
|
||||
[RegularExpression("^[a-z][a-z0-9]*$", ErrorMessage = "Usernames can only contain lowercase characters and numbers and should not start with a number")]
|
||||
public string Username { get; set; }
|
||||
|
||||
public string? Password { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "You need to provide permissions")]
|
||||
public string[] Permissions { get; set; } = [];
|
||||
}
|
||||
62
Moonlight.Shared/Http/Requests/FilterOptions.cs
Normal file
62
Moonlight.Shared/Http/Requests/FilterOptions.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests;
|
||||
|
||||
public class FilterOptions : IParsable<FilterOptions>
|
||||
{
|
||||
public Dictionary<string, string> Filters { get; set; }
|
||||
|
||||
public FilterOptions()
|
||||
{
|
||||
Filters = new();
|
||||
}
|
||||
|
||||
public FilterOptions(Dictionary<string, string> filters)
|
||||
{
|
||||
Filters = filters;
|
||||
}
|
||||
|
||||
public static FilterOptions Parse(string s, IFormatProvider? provider)
|
||||
{
|
||||
if (!TryParse(s, provider, out var result))
|
||||
throw new AggregateException("Unable to parse filter options");
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static bool TryParse(
|
||||
[NotNullWhen(true)] string? input,
|
||||
IFormatProvider? provider,
|
||||
[MaybeNullWhen(false)] out FilterOptions result
|
||||
)
|
||||
{
|
||||
result = new();
|
||||
|
||||
if (string.IsNullOrEmpty(input))
|
||||
return true;
|
||||
|
||||
var filters = input.Split(';', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||
|
||||
foreach (var part in filters)
|
||||
{
|
||||
var filterParts = part.Split('$', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||
|
||||
if (filterParts.Length != 2)
|
||||
continue;
|
||||
|
||||
result.Filters.Add(filterParts[0], filterParts[1]);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
var result = "";
|
||||
|
||||
foreach (var filter in Filters)
|
||||
result += $"{filter.Key}${filter.Value};";
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
13
Moonlight.Shared/Http/Requests/Users/CreateUserRequest.cs
Normal file
13
Moonlight.Shared/Http/Requests/Users/CreateUserRequest.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Users;
|
||||
|
||||
public class CreateUserRequest
|
||||
{
|
||||
[Required]
|
||||
[MinLength(3)]
|
||||
[MaxLength(32)]
|
||||
public string Username { get; set; }
|
||||
|
||||
[Required] [EmailAddress] public string Email { get; set; }
|
||||
}
|
||||
13
Moonlight.Shared/Http/Requests/Users/UpdateUserRequest.cs
Normal file
13
Moonlight.Shared/Http/Requests/Users/UpdateUserRequest.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Moonlight.Shared.Http.Requests.Users;
|
||||
|
||||
public class UpdateUserRequest
|
||||
{
|
||||
[Required]
|
||||
[MinLength(3)]
|
||||
[MaxLength(32)]
|
||||
public string Username { get; set; }
|
||||
|
||||
[Required] [EmailAddress] public string Email { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user