Refactor JWT token generation and update password handling logic; add exception handling behavior

This commit is contained in:
masoodafar-web
2025-11-13 21:40:14 +03:30
parent 4b1b135065
commit 8c4b1ab4f4
15 changed files with 199 additions and 34 deletions

View File

@@ -11,12 +11,30 @@ public class ValidationException : Exception
}
public ValidationException(IEnumerable<ValidationFailure> failures)
: this()
: base(BuildMessage(failures, out var errors))
{
Errors = failures
.GroupBy(e => e.PropertyName, e => e.ErrorMessage)
.ToDictionary(failureGroup => failureGroup.Key, failureGroup => failureGroup.ToArray());
Errors = errors;
}
public IDictionary<string, string[]> Errors { get; }
private static string BuildMessage(IEnumerable<ValidationFailure> failures, out IDictionary<string, string[]> errors)
{
var list = failures?.Where(f => !string.IsNullOrWhiteSpace(f.ErrorMessage)).ToList() ?? new List<ValidationFailure>();
errors = list
.GroupBy(e => e.PropertyName, e => e.ErrorMessage)
.ToDictionary(failureGroup => failureGroup.Key, failureGroup => failureGroup.ToArray());
var items = list
.Select(f => string.IsNullOrWhiteSpace(f.PropertyName)
? f.ErrorMessage
: $"{f.PropertyName}: {f.ErrorMessage}")
.Where(s => !string.IsNullOrWhiteSpace(s))
.ToArray();
return items.Length > 0
? string.Join(" | ", items)
: "One or more validation failures have occurred.";
}
}

View File

@@ -1,5 +1,5 @@
namespace CMSMicroservice.Application.Common.Interfaces;
public interface IGenerateJwtToken
{
Task<string> GenerateJwtToken(User user);
Task<string> GenerateJwtToken(User user,int? expiryDays=null);
}