Skip to content

Commit

Permalink
[#5] create register endpoint including username & password validation
Browse files Browse the repository at this point in the history
  • Loading branch information
philipphoeninger committed Oct 24, 2024
1 parent 549910c commit 6455311
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 0 deletions.
15 changes: 15 additions & 0 deletions API/API.FileSharing/Controllers/Identity/IdentityUserEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,19 @@ private static async Task<IResult> SignInAsync(
}
else return Results.BadRequest(new { message = "Username or password is incorrect." });
}

[AllowAnonymous]
private static async Task<IResult> SignUpAsync(
UserManager<User> userManager,
[FromBody] RegistrationRequest registerRequest)
{
User user = new User()
{
Email = registerRequest.Email,
UserName = registerRequest.UserName
};
IdentityResult result = await userManager.CreateAsync(user, registerRequest.Password);

return result.Succeeded ? Results.Ok(result) : Results.BadRequest(result);
}
}
8 changes: 8 additions & 0 deletions API/API.FileSharing/Controllers/Models/RegistrationRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace API.FileSharing.Controllers.Models;

public class RegistrationRequest
{
public string Email { get; set; }
public string Password { get; set; }
public string UserName { get; set; }
}
6 changes: 6 additions & 0 deletions API/API.FileSharing/Extensions/IdentityExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ public static IServiceCollection ConfigureIdentityOptions(this IServiceCollectio
services.Configure<IdentityOptions>(options =>
{
options.User.RequireUniqueEmail = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireLowercase = true;
options.Password.RequireUppercase = true;
options.Password.RequireDigit = true;
options.Password.RequiredLength = 6;
options.Password.RequiredUniqueChars = 2;
});
return services;
}
Expand Down
1 change: 1 addition & 0 deletions API/API.FileSharing/GlobalUsings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
global using API.FileSharing.Controllers;
global using API.FileSharing.Controllers.Base;
global using API.FileSharing.Controllers.Identity;
global using API.FileSharing.Controllers.Models;
global using API.FileSharing.Extensions;
//global using API.FileSharing.Filters;
//global using API.FileSharing.Security;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import 'reflect-metadata';
import { jsonObject, jsonMember } from 'typedjson';

@jsonObject
export class RegisterModel {
@jsonMember
email: string;

@jsonMember
username: string;

@jsonMember
password: string;

constructor(pEmail: string, pUsername: string, pPassword: string) {
this.email = pEmail;
this.username = pUsername;
this.password = pPassword;
}
}

0 comments on commit 6455311

Please sign in to comment.