Skip to content

Commit 2ab458b

Browse files
Ticket #916 : Returns an error message when there is no password
1 parent 2a03a83 commit 2ab458b

5 files changed

Lines changed: 55 additions & 1 deletion

File tree

src/IdServer/SimpleIdServer.IdServer.Pwd/IdServerBuilderExtensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public static IdServerBuilder AddPwdAuthentication(this IdServerBuilder idServer
4343
idServerBuilder.Services.AddTransient<IDataSeeder, UpdateTargetsPwdWorkflowsDataseeder>();
4444
idServerBuilder.Services.AddTransient<IDataSeeder, AddMissingResetTmpPwdAuthDataseeder>();
4545
idServerBuilder.Services.AddTransient<IDataSeeder, TransformNulltranslationToEmptyArrayDataseeder>();
46+
idServerBuilder.Services.AddTransient<IDataSeeder, UpdatePwdFormTranslationDataseeder>();
4647
idServerBuilder.Services.AddTransient<IFakerDataService, PwdAuthFakerService>();
4748
idServerBuilder.Services.AddTransient<IPasswordValidationService, PasswordValidationService>();
4849
idServerBuilder.AutomaticConfigurationOptions.Add(typeof(IdServerPasswordOptions));
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Copyright (c) SimpleIdServer. All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
3+
4+
using DataSeeder;
5+
using FormBuilder.Stores;
6+
using SimpleIdServer.IdServer.Stores;
7+
8+
namespace SimpleIdServer.IdServer.Pwd.Migrations;
9+
10+
public class UpdatePwdFormTranslationDataseeder : BaseAfterDeploymentDataSeeder
11+
{
12+
private readonly ITransactionBuilder _transactionBuilder;
13+
private readonly IFormStore _formStore;
14+
15+
public UpdatePwdFormTranslationDataseeder(
16+
ITransactionBuilder transactionBuilder,
17+
IFormStore formStore,
18+
IDataSeederExecutionHistoryRepository dataSeederExecutionHistoryRepository) : base(dataSeederExecutionHistoryRepository)
19+
{
20+
_transactionBuilder = transactionBuilder;
21+
_formStore = formStore;
22+
}
23+
24+
25+
public override string Name => nameof(UpdatePwdFormTranslationDataseeder);
26+
27+
protected override async Task Execute(CancellationToken cancellationToken)
28+
{
29+
using (var transaction = _transactionBuilder.Build())
30+
{
31+
32+
var existingForm = await _formStore.Get(Constants.DefaultRealm, StandardPwdAuthForms.PwdForm.Id, cancellationToken);
33+
if (existingForm == null)
34+
{
35+
return;
36+
}
37+
38+
existingForm.ErrorMessageTranslations = StandardPwdAuthForms.PwdForm.ErrorMessageTranslations;
39+
await _formStore.SaveChanges(cancellationToken);
40+
await transaction.Commit(cancellationToken);
41+
}
42+
}
43+
}

src/IdServer/SimpleIdServer.IdServer.Pwd/Services/PasswordAuthenticationService.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using SimpleIdServer.IdServer.Helpers;
66
using SimpleIdServer.IdServer.Layout.AuthFormLayout;
77
using SimpleIdServer.IdServer.Options;
8-
using SimpleIdServer.IdServer.Resources;
98
using SimpleIdServer.IdServer.Stores;
109
using SimpleIdServer.IdServer.UI.Services;
1110
using SimpleIdServer.IdServer.UI.ViewModels;
@@ -69,6 +68,11 @@ protected override Task<CredentialsValidationResult> Validate(string realm, User
6968
else
7069
{
7170
var credential = authenticatedUser.Credentials.FirstOrDefault(c => c.CredentialType == Constants.AreaPwd && c.IsActive);
71+
if (credential == null)
72+
{
73+
return Task.FromResult(CredentialsValidationResult.Error(AuthFormErrorMessages.NoCredential, AuthFormErrorMessages.NoCredential));
74+
}
75+
7276
if (!PasswordHelper.VerifyHash(credential, viewModel.Password))
7377
{
7478
return Task.FromResult(CredentialsValidationResult.InvalidCredentials(authenticatedUser));

src/IdServer/SimpleIdServer.IdServer.Pwd/StandardPwdAuthForms.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ public class StandardPwdAuthForms
109109
.AddErrorMessage(AuthFormErrorMessages.UserDoesntExist, Global.UserDoesntExist)
110110
.AddErrorMessage(AuthFormErrorMessages.InvalidCredential, Global.InvalidCredential)
111111
.AddErrorMessage(AuthFormErrorMessages.UserBlocked, Global.UserAccountIsBlocked)
112+
.AddErrorMessage(AuthFormErrorMessages.NoCredential, Global.NoActivePassword)
112113
.Build();
113114

114115
public static FormRecord ResetForm = AuthLayoutBuilder.New("8d416c21-2278-4e11-9544-f5a36f979b6d", "resetPwd", "resetPwd", false)

src/IdServer/SimpleIdServer.IdServer/Helpers/PasswordHelper.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ public static class PasswordHelper
1212
{
1313
public static bool VerifyHash(UserCredential credential, string pwd)
1414
{
15+
if(credential == null)
16+
{
17+
return false;
18+
}
19+
1520
if(credential.HashAlg == PasswordHashAlgs.Default)
1621
{
1722
return VerifyDefaultHash(credential.Value, pwd);

0 commit comments

Comments
 (0)