public async Task AuthenticateAsync(LoginDto login) { var registereUser = await repository.GetByAsync(u => u.Username == login.Username); if (registereUser == null) { throw new ArgumentNullException(); } login.Authenticate(registereUser.PasswordHash, registereUser.PasswordSalt); login.Password = null; login.UserId = registereUser.Id; if (registereUser.Roles.Count == 0) { registereUser.Roles.Add(new Role { RoleName = "User" }); await repository.UpdateAsync(registereUser); } login.Roles = registereUser.Roles.Select(r => new RoleDto { RoleName = r.RoleName }).ToArray(); login.Created = DateTime.UtcNow; }