Files
Website/BlazorApp/Models/DeveloperApplication.cs
SysAdmin d0785e04e1
All checks were successful
Build and Deploy / deploy (push) Successful in 41s
feat(developers): overhaul signup to auto-register SilverDESK accounts
Users now pick a password and get a SilverDESK account immediately on
submit. The form includes debounced username availability checking,
password fields with validation, and a post-submit link to SilverDESK.
The approval flow no longer creates a SilverDESK user (already exists)
and only provisions Mattermost + Mailcow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:03:16 +00:00

49 lines
1.9 KiB
C#

using System.ComponentModel.DataAnnotations;
namespace SilverLabs.Website.Models;
public class DeveloperApplication
{
[Required(ErrorMessage = "Full name is required")]
[StringLength(100, MinimumLength = 2)]
public string FullName { get; set; } = string.Empty;
[Required(ErrorMessage = "Email is required")]
[EmailAddress(ErrorMessage = "Invalid email address")]
public string Email { get; set; } = string.Empty;
[Required(ErrorMessage = "Username is required")]
[RegularExpression(@"^[a-zA-Z0-9_-]{3,30}$", ErrorMessage = "Username must be 3-30 characters, letters, numbers, hyphens and underscores only")]
public string DesiredUsername { get; set; } = string.Empty;
[Required(ErrorMessage = "Timezone is required")]
public string Timezone { get; set; } = string.Empty;
[Required(ErrorMessage = "Please select a role")]
public ApplicationRole Role { get; set; }
[Required(ErrorMessage = "Please select at least one platform")]
[MinLength(1, ErrorMessage = "Please select at least one platform")]
public List<string> Platforms { get; set; } = new();
public string? Skills { get; set; }
[Required(ErrorMessage = "Password is required")]
[StringLength(100, MinimumLength = 8, ErrorMessage = "Password must be at least 8 characters")]
public string Password { get; set; } = string.Empty;
[Required(ErrorMessage = "Please confirm your password")]
[Compare("Password", ErrorMessage = "Passwords do not match")]
public string ConfirmPassword { get; set; } = string.Empty;
[Required(ErrorMessage = "Please tell us why you want to join")]
[StringLength(2000, MinimumLength = 20, ErrorMessage = "Motivation must be between 20 and 2000 characters")]
public string Motivation { get; set; } = string.Empty;
}
public enum ApplicationRole
{
Tester,
Developer
}