All checks were successful
Build and Deploy / deploy (push) Successful in 41s
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>
49 lines
1.9 KiB
C#
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
|
|
}
|