diff --git a/src/WorkFlowCheck.API/Controllers/UserController.cs b/src/WorkFlowCheck.API/Controllers/UserController.cs index e801f7b..2e5b7ab 100644 --- a/src/WorkFlowCheck.API/Controllers/UserController.cs +++ b/src/WorkFlowCheck.API/Controllers/UserController.cs @@ -93,7 +93,7 @@ namespace WorkFlowCheck.API.Controllers return retVal; } [HttpPost("Authenticate")] - public async Task> Authenticate([FromBody] UserDTO userSimpleDTO) + public async Task> Authenticate([FromBody] UserSimpleDTO userSimpleDTO) { var retVal = new ApiResponseDTO() { diff --git a/src/WorkFlowCheck.Common/DTO/UserDTO.cs b/src/WorkFlowCheck.Common/DTO/UserDTO.cs index 2ea8dda..e763c54 100644 --- a/src/WorkFlowCheck.Common/DTO/UserDTO.cs +++ b/src/WorkFlowCheck.Common/DTO/UserDTO.cs @@ -6,8 +6,11 @@ namespace WorkFlowCheck.Common.DTO { public int Id { get; set; } public string Email { get; set; } = null!; + [Required(ErrorMessage = "Az utónév kötelező.")] public string FirstName { get; set; } = null!; + [Required(ErrorMessage = "Az vezetéknév kötelező.")] public string LastName { get; set; } = null!; + [Required(ErrorMessage = "A felhasználónév kötelező.")] public string UserName { get;set; } = null!; public string Password { get; set; } public string JwtToken { get; set; } = null!; @@ -16,7 +19,9 @@ namespace WorkFlowCheck.Common.DTO public class UserSimpleDTO { + [Required(ErrorMessage = "A felhasználónév kötelező.")] public string UserName { get; set; } = null!; + [Required(ErrorMessage = "A jelszó megadása kötelező.")] public string Password { get; set; } } } diff --git a/src/WorkFlowCheck.Web/Pages/Account/Login.cshtml b/src/WorkFlowCheck.Web/Pages/Account/Login.cshtml index de78ebf..a92c7bc 100644 --- a/src/WorkFlowCheck.Web/Pages/Account/Login.cshtml +++ b/src/WorkFlowCheck.Web/Pages/Account/Login.cshtml @@ -44,6 +44,10 @@ + + + + diff --git a/src/WorkFlowCheck.Web/Pages/Shared/_Layout.cshtml b/src/WorkFlowCheck.Web/Pages/Shared/_Layout.cshtml index e7656d5..e2ab197 100644 --- a/src/WorkFlowCheck.Web/Pages/Shared/_Layout.cshtml +++ b/src/WorkFlowCheck.Web/Pages/Shared/_Layout.cshtml @@ -1,5 +1,5 @@  - + diff --git a/src/WorkFlowCheck.Web/Pages/UserAndRole/UserEditPage.cshtml b/src/WorkFlowCheck.Web/Pages/UserAndRole/UserEditPage.cshtml index 4a057a2..16924b5 100644 --- a/src/WorkFlowCheck.Web/Pages/UserAndRole/UserEditPage.cshtml +++ b/src/WorkFlowCheck.Web/Pages/UserAndRole/UserEditPage.cshtml @@ -44,8 +44,8 @@ const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); var formData = getFormAsNestedObject('#UserForm'); const $form = $('#UserForm'); - console.log($form); - if ($form[0].checkValidity()) + + if ($form.valid()) { $.ajax({ url: $('#UserEditPostUrl').val(), @@ -78,6 +78,22 @@ } }); + + $(document).ready(function () { + const $form = $("#userForm"); + $form.validate({ + errorClass: "text-danger small", + errorPlacement: function (error, element) { + error.appendTo(element.parent()); + } + }); + + // $form.on("submit", function (e) { + // if (!$form.valid()) { + // e.preventDefault(); // Ne küldje be, ha van hiba + // } + // }); + }); } \ No newline at end of file diff --git a/src/WorkFlowCheck.Web/Program.cs b/src/WorkFlowCheck.Web/Program.cs index 150db7a..7883fb3 100644 --- a/src/WorkFlowCheck.Web/Program.cs +++ b/src/WorkFlowCheck.Web/Program.cs @@ -8,6 +8,7 @@ using WorkFlowCheck.Common.DTO; using WorkFlowCheck.Web.Middleware; using WorkFlowCheck.Web.Services; using WorkFlowCheck.Web.Services.Interfaces; +using WorkFlowCheck.Web.Validators; var builder = WebApplication.CreateBuilder(args); @@ -50,6 +51,8 @@ builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) }; }); +builder.Services.AddFluentValidationSetup(); + var app = builder.Build(); app.UseMiddleware(); diff --git a/src/WorkFlowCheck.Web/Validators/FluentValidationConfig.cs b/src/WorkFlowCheck.Web/Validators/FluentValidationConfig.cs new file mode 100644 index 0000000..7d8b1fa --- /dev/null +++ b/src/WorkFlowCheck.Web/Validators/FluentValidationConfig.cs @@ -0,0 +1,19 @@ +using FluentValidation.AspNetCore; +using FluentValidation; + +namespace WorkFlowCheck.Web.Validators +{ + public static class FluentValidationConfig + { + public static IServiceCollection AddFluentValidationSetup(this IServiceCollection services) + { + services.AddFluentValidationAutoValidation(); + services.AddFluentValidationClientsideAdapters(); // ha valaha szeretnél client-side-t is + + // Itt regisztrálod a validátorokat – automatikusan az adott assembly-ből + services.AddValidatorsFromAssembly(typeof(FluentValidationConfig).Assembly); + + return services; + } + } +} diff --git a/src/WorkFlowCheck.Web/Validators/UserDTOValidator.cs b/src/WorkFlowCheck.Web/Validators/UserDTOValidator.cs new file mode 100644 index 0000000..c1ec290 --- /dev/null +++ b/src/WorkFlowCheck.Web/Validators/UserDTOValidator.cs @@ -0,0 +1,20 @@ +using FluentValidation; +using WorkFlowCheck.Common.DTO; + +namespace WorkFlowCheck.Web.Validators +{ + public class UserDTOValidator : AbstractValidator + { + public UserDTOValidator() + { + RuleFor(x => x.UserName) + .NotEmpty().WithMessage("A felhasználónév kötelező."); + + RuleFor(x => x.FirstName) + .NotEmpty().WithMessage("A keresztnév kötelező."); + + RuleFor(x => x.LastName) + .NotEmpty().WithMessage("A vezetéknév kötelező."); + } + } +} diff --git a/src/WorkFlowCheck.Web/WorkFlowCheck.Web.csproj b/src/WorkFlowCheck.Web/WorkFlowCheck.Web.csproj index 4e75cbf..13b4457 100644 --- a/src/WorkFlowCheck.Web/WorkFlowCheck.Web.csproj +++ b/src/WorkFlowCheck.Web/WorkFlowCheck.Web.csproj @@ -15,6 +15,8 @@ + +