Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[runbook task] Merge 5.0 into master #526

Merged
merged 110 commits into from
Nov 5, 2020
Merged
Show file tree
Hide file tree
Changes from 108 commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
e4e3f46
Adding support for multiple affinity cookies (#331)
nikola-naydenov-hmcts Mar 12, 2020
10c55e5
SIDM-2686 - Cross browser tests (#333)
henrydobson Mar 12, 2020
a8d7a0c
Welsh language (#334)
Mar 25, 2020
9373d04
Add locale passing interceptor.
Mar 27, 2020
39b5079
Inject LocalePassingInterceptor to the global REST Template.
Mar 17, 2020
38efe85
Ignore other local profiles.
Mar 27, 2020
7de33c7
Extend the locale cookie expiration.
Mar 27, 2020
985683d
Increase the cookie expiration to 10 years.
Mar 27, 2020
3a0d814
Merge branch 'preview' into SIDM-3932_idm_notifications
Mar 27, 2020
4c8a13e
Cleanup debug code.
Mar 30, 2020
57b3729
Don't overwrite the language header set in another thread in the inte…
Mar 30, 2020
e26b392
SIDM-3353 Create password - add additional guidance text. (#337)
dfourn Mar 31, 2020
07819f6
Improve test coverage. (#347)
Apr 1, 2020
f447d72
More test coverage for Welsh. (#348)
Apr 1, 2020
9ffe97d
SIDM-3977 Add test to check if activation link can be used after the …
dfourn Apr 6, 2020
a8c0c04
COVID-19 Contact Us pages changes (post Welsh) (#350)
Apr 9, 2020
572105a
Sidm 3831 externalise text (#342)
Apr 9, 2020
e4ee728
SIDM-3831 Fix Welsh translations. (#355)
Apr 15, 2020
b8aca08
SIDM-3582 SIDM-3404 Account Activation link expired screen (#354)
dfourn Apr 15, 2020
147db73
Welsh - fix AKS languages (#357)
Apr 16, 2020
15bb408
Sidm 4015 welsh functional tests (#352)
Apr 21, 2020
2767c79
Merge demo to preview after merging master to demo (#365)
Apr 29, 2020
7ca98bb
add login with pin test (#361)
shravanmechineni Apr 30, 2020
179fc13
Fix CVE-2020-9488 vulnerability. (#367)
May 13, 2020
3ada921
Make /activate POST request redirect to a GET endpoint that can have …
May 15, 2020
fdf66bc
Sidm 4120 welsh post requests (#368)
May 18, 2020
e55dffb
Sidm 4120 welsh post requests (#370)
May 18, 2020
e44e3bc
V2 1 intermediary master bfg (#374)
henrydobson Jun 8, 2020
792d59d
Increase test code coverage. (#377)
Jun 9, 2020
c2894a9
fix: remove reference to idam-master tf state (#378)
Jun 9, 2020
6c88dca
Sonar failure fix attempt. (#381)
Jun 9, 2020
7498843
V2 1 rc2 master into preview (#386)
tbamido Jun 10, 2020
f048f30
Bump java version to 11. (#360)
Jun 12, 2020
9a967c9
Set default response to HTML (#396)
nikola-naydenov-hmcts Jun 19, 2020
9c936e0
Extend media type list
Jun 19, 2020
21420ba
SIDM 4211 (#391)
jitumiah Jun 25, 2020
b8c2949
upgrade bom to 2.2.4 (#398)
dfourn Jun 26, 2020
e0a6643
SIDM-4347 - Deprecate App Service Site (#400)
henrydobson Jun 29, 2020
c0c9205
Sidm4235 azure redis cache (#402)
Jul 2, 2020
fcfac0f
added reset password page after stale user tries logging in (#401)
jitumiah Jul 3, 2020
57ec6eb
improved unit testing for stale user login (#403)
jitumiah Jul 3, 2020
aa1aa54
Vulnerability fixes
Jul 6, 2020
a5d7df0
Sidm4403 disable session affinity cookie (#406)
Jul 7, 2020
02ed6b2
fixed issue when redirecting we lose some variables. also fixed issue…
jitumiah Jul 8, 2020
5161789
possible quality gate fix (#408)
jitumiah Jul 8, 2020
ad23099
optional request params (#411)
jitumiah Jul 9, 2020
5bb8cc1
changed text within try again link (#413)
jitumiah Jul 10, 2020
9265ac9
feat(redis): make sandbox redis public for local dev (#410)
Jul 10, 2020
7efc706
redirect user on activation to reset password success if user is a st…
jitumiah Jul 13, 2020
2ccb748
SIDM-4092 FR AuthTrees (#390)
Jul 14, 2020
a0e1c59
Stale user tests (#404)
shravanmechineni Jul 14, 2020
5da1134
SIDM-4233 SSO Login (#416)
nikola-naydenov-hmcts Jul 27, 2020
a901e7e
chore: increase chart version (#423)
Jul 27, 2020
3535cb6
Force disable caching in web-public
Jul 29, 2020
04ea511
SIDM-4704 Change of email address for FPL (#430)
dfourn Aug 6, 2020
9541ce2
SIDM-4413 eJudiciary login button and redis session fixes (#427)
nikola-naydenov-hmcts Aug 7, 2020
8c299db
Sidm 4413 SSO Login button and error handling (#433)
nikola-naydenov-hmcts Aug 13, 2020
5707bdd
Increase code coverage
Aug 13, 2020
0336d5a
Sidm 4567 accessibility login (#415)
Aug 17, 2020
f7215ec
SIDM-4641 SSO feature flag. (#436)
Aug 18, 2020
c2d2963
SIDM-4413 SIDM-4414 SIDM-4416 Welsh translations for SSO messages. (#…
Aug 19, 2020
2ab437e
SIDM-4178 Fix reverse tabnabbing vulnerability. (#441)
Aug 19, 2020
db5546d
SIDM-4641 sso feature flag (#440)
Aug 19, 2020
a346646
Ignore checked pa11y warnings. (#443)
dfourn Aug 19, 2020
3a93b55
Sidm 4178 zapscanner issues (#444)
Aug 20, 2020
6589552
SIDM-4178 Fix reverse tabnabbing vulnerability part 2 (#448)
Aug 21, 2020
ffe663a
SIDM-4178 Add exclusions for low-level issues (aat only). (#449)
Aug 21, 2020
7933bed
E judiciary login test (#446)
shravanmechineni Aug 24, 2020
b7a97fa
fix(chart): -java workaround (#455)
henrydobson Aug 25, 2020
516969a
Sidm 4810 revert sso error message (#453)
Aug 26, 2020
63d3038
Fix the login button (#451)
nikola-naydenov-hmcts Aug 26, 2020
1a40af6
Increase code coverage. (#457)
Aug 26, 2020
dddaeff
Increase code coverage. (#458)
Aug 27, 2020
450e332
update cross browser tests (#460)
shravanmechineni Aug 27, 2020
22d868e
Sidm 4806 (#454)
jitumiah Aug 27, 2020
5382c54
Sidm 4811 sso email whitelist (#456)
Aug 27, 2020
ae131b6
Sidm 4811 fixes (#462)
Aug 28, 2020
5d1fdc0
Fix some sonar issues failing the build. (#465)
Sep 1, 2020
a7f0be8
Removing the resource server filters as they should not be required (…
nikola-naydenov-hmcts Sep 1, 2020
1a13512
More code coverage for Sonar. (#467)
Sep 1, 2020
c208625
web public userinfo test (#474)
shravanmechineni Sep 2, 2020
289eee0
Chore v4 master into preview (#470)
tbamido Sep 2, 2020
c780f2d
Remove duplicates, sort and add more exclusions. (#476)
Sep 3, 2020
bce42cc
fix flaky test (#478)
shravanmechineni Sep 3, 2020
a5ae634
Suppress jcip-annotations-1.0-1 vulnerability. (#479)
Sep 4, 2020
251a732
Bug: Send stale user registration on pin journey for stale users (#481)
nikola-naydenov-hmcts Sep 7, 2020
1075951
add stale user pin journey tests (#484)
shravanmechineni Sep 8, 2020
029c48c
bug(SIDM-4848): Allow to turn SSO off without conf (#483)
tbamido Sep 9, 2020
ec96152
bug(sidm-4848): FORCE DISABLE SSO FOR PREVIEW ONLY (#485)
tbamido Sep 10, 2020
5eb965f
Bug sso off config (#487)
Sep 10, 2020
7f24de3
Don't remove the config completely, as it won't happen in master eith…
Sep 11, 2020
fc12df4
Roll back sso feature off (#492)
Sep 14, 2020
5b8bdd4
chore(v4): merge v4.0.1 into preview (#503)
tbamido Oct 6, 2020
3f25933
SIDM-4773 (#450)
jitumiah Oct 6, 2020
0543acc
SIDM-4733-Update-CMC-Privacy-Policy (#437) (#459)
dfourn Oct 6, 2020
782cc54
SIDM-4772 Fix error reporting for setting user password. (#452)
Oct 7, 2020
b7a5cfa
SIDM-4137 Add contact information for Immigration and Asylum. No Wels…
Oct 12, 2020
c534d3c
Upgrade OWASP dependency plugin version. (#506)
Oct 13, 2020
3d8f9c7
SIDM-5010: Do not lose OIDC params when going through MFA flow (#508)
kremi Oct 20, 2020
a905834
CVE-2020-13943 Fix. (#515)
Oct 27, 2020
5209b79
Sidm 5013 step up authentication (#513)
Oct 27, 2020
6c005e7
Introduce a feature flag controlling StepUp authentication. (#518)
Oct 29, 2020
19bece3
Use a cookie instead of a custom header to pass session token for ste…
kremi Oct 30, 2020
26266db
SIDM-4971 Slight copy change in "Login with your eJudiciary account"
jitumiah Oct 30, 2020
5ebb888
Sidm-5132 (#522)
Nov 2, 2020
7f955ab
Merge branch 'preview' into 5.0-preview-to-master
Nov 5, 2020
7b82f65
Update infrastructure/main.tf
Nov 5, 2020
26e590b
chore(cicd): remove prod blocker
henrydobson Nov 5, 2020
68d9795
Update Jenkinsfile_CNP
henrydobson Nov 5, 2020
80a3766
fix(whitespace): jenkinsfile
henrydobson Nov 5, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 6 additions & 10 deletions Jenkinsfile_CNP
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ withPipeline(type, product, component) {
Using PREVIEW_ENVIRONMENT_NAME: ${env.PREVIEW_ENVIRONMENT_NAME}
Using NONPROD_ENVIRONMENT_NAME: ${env.NONPROD_ENVIRONMENT_NAME}""".stripIndent()
}

This conversation was marked as resolved.
Show resolved Hide resolved
henrydobson marked this conversation as resolved.
Show resolved Hide resolved
before('smoketest-aks:idam-preview') {
env.PREVIEW_ENVIRONMENT_NAME = 'preview'
env.PREVIEW_ENVIRONMENT_NAME = 'preview'
env.NONPROD_ENVIRONMENT_NAME = 'preview'
env.IDAMAPI = "https://idam-api.service.core-compute-preview.internal"
println """\
Expand All @@ -68,7 +68,7 @@ withPipeline(type, product, component) {
Using NONPROD_ENVIRONMENT_NAME: ${env.NONPROD_ENVIRONMENT_NAME}
Using IDAMAPI: ${env.IDAMAPI}""".stripIndent()
}

henrydobson marked this conversation as resolved.
Show resolved Hide resolved
before('smoketest-aks:idam-aat') {
env.NONPROD_ENVIRONMENT_NAME = 'aat'
env.IDAMAPI = "https://idam-api-staging.service.core-compute-aat.internal"
Expand All @@ -84,7 +84,7 @@ withPipeline(type, product, component) {
Using NONPROD_ENVIRONMENT_NAME: ${env.NONPROD_ENVIRONMENT_NAME}
Using IDAMAPI: ${env.IDAMAPI}""".stripIndent()
}

before('buildinfra:idam-ithc') {
env.ITHC_ENVIRONMENT_NAME = 'ithc'
println """\
Expand All @@ -98,7 +98,7 @@ withPipeline(type, product, component) {
Using PREVIEW_ENVIRONMENT_NAME: ${env.PREVIEW_ENVIRONMENT_NAME}
Using NONPROD_ENVIRONMENT_NAME: ${env.NONPROD_ENVIRONMENT_NAME}""".stripIndent()
}

after('smoketest-aks:idam-preview') {
env.PREVIEW_ENVIRONMENT_NAME = 'idam-preview'
env.NONPROD_ENVIRONMENT_NAME = 'idam-aat'
Expand All @@ -115,7 +115,7 @@ withPipeline(type, product, component) {
Using NONPROD_ENVIRONMENT_NAME: ${env.NONPROD_ENVIRONMENT_NAME}""".stripIndent()
}
// End AKS Callbacks

after('test') {
publishHTML target: [
allowMissing : true,
Expand Down Expand Up @@ -189,8 +189,4 @@ withPipeline(type, product, component) {
reportName : "IDAM Web Public E2E functional tests result"
]
}

before('buildinfra:idam-prod') {
error('Stopping pipeline before Prod stages')
}
}
5 changes: 3 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ allprojects {
sourceCompatibility = 11
targetCompatibility = 11

def idamBomVersion = '2.3.9'
def idamBomVersion = '2.5.1'
//TODO: Remove once spring boot have updated versions to match
ext['tomcat.version'] = '9.0.37'
ext['tomcat.version'] = '9.0.39'
ext['log4j2.version'] = '2.13.3'
ext['spring.boot.version'] = '2.2.10.RELEASE'

Expand Down Expand Up @@ -116,6 +116,7 @@ allprojects {

testCompileOnly("org.projectlombok:lombok")
testAnnotationProcessor("org.projectlombok:lombok")
testCompile('pl.pragmatists:JUnitParams:1.1.1')

testImplementation group: 'org.mockito', name: 'mockito-core'
testImplementation group: 'org.springframework', name: 'spring-test'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@
@Data
public class FeaturesConfigurationProperties {
private boolean federatedSSO;
private boolean stepUpAuthentication;
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ public static void showError(String errorTitle, String errorMessage, String erro
model.put(ERROR_LABEL_TWO, errorLabelTwo);
}

public static void showError(String errorLabelOne, String errorLabelTwo, Map<String, Object> model) {
model.put(ERROR, ERROR);
model.put(ERROR_LABEL_ONE, errorLabelOne);
model.put(ERROR_LABEL_TWO, errorLabelTwo);
}

public static HttpStatusCodeException restException(@Nullable String message,
HttpStatus status, HttpHeaders headers,
String error, String description) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
@Component
public class SSOZuulFilter extends ZuulFilter {

public static final int FILTER_ORDER = 0;

private final ConfigurationProperties configurationProperties;
private final SSOService ssoService;

Expand All @@ -35,7 +37,7 @@ public String filterType() {

@Override
public int filterOrder() {
return 0;
return FILTER_ORDER;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,15 +128,30 @@ public String uplift(final String username, final String password, final String
}

public ApiAuthResult authenticate(final String username, final String password, final String redirectUri, final String ipAddress) throws JsonProcessingException {
return authenticate(username, password, null, redirectUri, ipAddress);
}

public ApiAuthResult authenticate(final String tokenId, final String redirectUri, final String ipAddress) throws JsonProcessingException {
return authenticate(null, null, tokenId, redirectUri, ipAddress);
}

protected ApiAuthResult authenticate(final String username, final String password, final String tokenId, final String redirectUri, final String ipAddress) throws JsonProcessingException {
MultiValueMap<String, String> form = new LinkedMultiValueMap<>(4);
form.add("username", username);
form.add("password", password);
if (username != null) {
form.add("username", username);
}
if (password != null) {
form.add("password", password);
}
form.add("redirectUri", redirectUri);
form.add("originIp", ipAddress);

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.add(X_FORWARDED_FOR, ipAddress);
if (tokenId != null) {
headers.add(HttpHeaders.COOKIE, configurationProperties.getStrategic().getSession().getIdamSessionCookie() + "=" + tokenId);
}

final ApiAuthResult.ApiAuthResultBuilder resultBuilder = ApiAuthResult.builder();

Expand Down Expand Up @@ -175,11 +190,11 @@ public ApiAuthResult authenticate(final String username, final String password,
* @should not send state and scope parameters in form if they are not send as parameter in the service
* @should return null if api response code is not 302
*/
public String authorize(final Map<String, String> params, final List<String> cookie) {
public String authorize(final Map<String, String> params, final List<String> cookies) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
if (cookie != null) {
headers.add(HttpHeaders.COOKIE, StringUtils.join(cookie, ";"));
if (cookies != null) {
headers.add(HttpHeaders.COOKIE, StringUtils.join(cookies, ";"));
}
addUriHeaders(headers);
MultiValueMap<String, String> form = new LinkedMultiValueMap<>(14);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
package uk.gov.hmcts.reform.idam.web.strategic;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import uk.gov.hmcts.reform.idam.web.config.properties.ConfigurationProperties;
import uk.gov.hmcts.reform.idam.web.helper.MvcKeys;
import uk.gov.hmcts.reform.idam.web.sso.SSOZuulFilter;

import javax.annotation.Nonnull;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.Optional;

import static com.netflix.zuul.constants.ZuulHeaders.X_FORWARDED_FOR;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE;

@Slf4j
@Component
@ConditionalOnProperty("features.step-up-authentication")
public class StepUpAuthenticationZuulFilter extends ZuulFilter {

public static final String ZUUL_PROCESSING_ERROR = "Cannot process authentication response";
public static final String OIDC_AUTHORIZE_ENDPOINT = "/o/authorize";

private final SPIService spiService;
private final String idamSessionCookieName;

@Autowired
public StepUpAuthenticationZuulFilter(@Nonnull final ConfigurationProperties configurationProperties, @Nonnull final SPIService spiService) {
this.idamSessionCookieName = configurationProperties.getStrategic().getSession().getIdamSessionCookie();
this.spiService = spiService;
}

@Override
public String filterType() {
return PRE_TYPE;
}

/**
* {@inheritDoc}
*
* <p>Makes sure it runs AFTER the {@link SSOZuulFilter}.</p>
*
* @return
*/
@Override
public int filterOrder() {
return SSOZuulFilter.FILTER_ORDER + 1;
}

@Override
public boolean shouldFilter() {
final HttpServletRequest request = RequestContext.getCurrentContext().getRequest();
return isAuthorizeRequest(request) && hasSessionCookie(request);
}

@Override
public Object run() {
final RequestContext ctx = RequestContext.getCurrentContext();
final HttpServletRequest request = ctx.getRequest();

log.info("StepUp filter triggered.");

final String tokenId = getSessionToken(request);

try {
final String originIp = ObjectUtils.defaultIfNull(request.getHeader(X_FORWARDED_FOR), request.getRemoteAddr());
final String redirectUri = request.getParameter(MvcKeys.REDIRECT_URI);
final ApiAuthResult authenticationResult = spiService.authenticate(tokenId, redirectUri, originIp);

if (authenticationResult.requiresMfa()) {
dropCookie(idamSessionCookieName, ctx);
}

} catch (final JsonProcessingException e) {
log.error(ZUUL_PROCESSING_ERROR, e);
}
// continue as usual (delegate to idam-api)
ctx.setSendZuulResponse(true);
return null;
}

protected void dropCookie(@Nonnull final String cookieName, @Nonnull final RequestContext context) {
context.addZuulRequestHeader(HttpHeaders.COOKIE, cookieName + "=");
}

protected String getSessionToken(@Nonnull final HttpServletRequest request) {
return Arrays.stream(getCookiesFromRequest(request))
.filter(cookie -> idamSessionCookieName.equals(cookie.getName()))
.map(Cookie::getValue)
.findAny()
.orElseThrow();
}

protected boolean isAuthorizeRequest(@Nonnull final HttpServletRequest request) {
return request.getRequestURI().contains(OIDC_AUTHORIZE_ENDPOINT) &&
("post".equalsIgnoreCase(request.getMethod()) || "get".equalsIgnoreCase(request.getMethod()));
}

protected boolean hasSessionCookie(@Nonnull final HttpServletRequest request) {
return Arrays.stream(getCookiesFromRequest(request)).anyMatch(cookie -> idamSessionCookieName.equals(cookie.getName()));
}

@Nonnull
protected Cookie[] getCookiesFromRequest(@Nonnull final HttpServletRequest request) {
return Optional.ofNullable(request.getCookies()).orElse(new Cookie[]{});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@

@Component
public class ValidationService {

public static final String ERROR_TITLE = "Error";


private final ObjectMapper mapper;

private final int passwordMinLength;
Expand All @@ -45,36 +43,34 @@ public ValidationService(
*/
public boolean validatePassword(final String password1, final String password2, Map<String, Object> model) {

if (StringUtils.isEmpty(password1) && StringUtils.isEmpty(password2)) {
ErrorHelper.showError(ERROR_TITLE, "public.common.error.password.not.empty", "public.common.error.enter.password", "public.common.error.enter.password", model);
return false;
}
String errorForPassword1 = "";
String errorForPassword2 = "";

// check password 1
if (StringUtils.isEmpty(password1)) {
ErrorHelper.showError(ERROR_TITLE, "public.common.error.password.not.empty", "public.common.error.enter.password", "", model);
model.put("password2", password2);
return false;
}
if (StringUtils.isEmpty(password2)) {
ErrorHelper.showError(ERROR_TITLE, "public.common.error.password.not.empty", "", "public.common.error.enter.password", model);
model.put("password1", password1);
return false;
errorForPassword1 = "public.common.error.enter.password";
} else if (password1.length() < passwordMinLength || password1.length() > passwordMaxLength || containsIllegalCharacters(password1)) {
errorForPassword1 = "public.common.error.password.details";
}

if (!password1.equals(password2)) {
ErrorHelper.showError(ERROR_TITLE, "public.common.error.password.not.same", "", "public.common.error.password.should.match", model);
model.put("password1", password1);
return false;
// check password 2
if (StringUtils.isEmpty(password2)) {
errorForPassword2 = "public.common.error.enter.password";
} else if (!password2.equals(password1)) {
errorForPassword2 = "public.common.error.password.should.match";
}

if (password1.length() < passwordMinLength || password1.length() > passwordMaxLength) {
ErrorHelper.showError(ERROR_TITLE, "public.common.error.invalid.password", "public.common.error.password.details", "", model);
model.put("password1", password1);
return false;
}
final boolean password1HasErrors = !errorForPassword1.isEmpty();
final boolean password2HasErrors = !errorForPassword2.isEmpty();

if (containsIllegalCharacters(password1)) {
ErrorHelper.showError(ERROR_TITLE, "public.common.error.invalid.password.illegal-characters", "public.common.error.password.details", "", model);
model.put("password1", password1);
if (password1HasErrors || password2HasErrors) {
if (!password1HasErrors) {
model.put("password1", password1);
}
if (!password2HasErrors) {
model.put("password2", password2);
}
ErrorHelper.showError(errorForPassword1, errorForPassword2, model);
return false;
}
return true;
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ azure:

features:
federated-s-s-o: ${federated.sso:true}
step-up-authentication: ${step.up.authentication:true}

ssoEmailDomains:
dummy: dummy
Expand Down
8 changes: 7 additions & 1 deletion src/main/resources/messages.properties
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,12 @@ public.error.page.already.activated.description=Your account is already activate
public.login.heading=Sign in or create an account
public.login.heading.no.self.register=Sign in
public.login.subheading.sign.in=Sign in
public.login.subheading.sign.in.with.security.code=Enter security code to sign in
public.login.subheading.create.account=Create an account
public.login.create.account.body=You need to
public.login.create.account.body.to.use.service= to use this service.
public.login.forgotten.password=Forgotten password?
public.login.azure.link=Login with your eJudiciary account
public.login.azure.link=Log in with your eJudiciary account
public.login.azure.link.or=Or
public.login.form.submit=Sign in

Expand Down Expand Up @@ -285,6 +286,11 @@ public.contactus.text_0036=Monday to Thursday, 8am to 5pm
public.contactus.text_0037=Friday 8am to 4pm
public.contactus.text_0038=No Saturday opening hours
public.contactus.text_0039=Find out about call charges
public.contactus.text_0040=Immigration and Asylum
public.contactus.text_0041=Email: customer.service@justice.gov.uk
public.contactus.text_0042=Phone: 0300 123 1711
public.contactus.text_0043=Monday to Friday, 8:30am to 5pm
public.contactus.text_0044=Find out about call charges

# Cookies
public.cookies.text_0001=Back
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/messages_cy.properties
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ public.error.page.already.activated.description=Mae eich cyfrif wedi cael ei act
public.login.heading=Mewngofnodwch neu crëwch gyfrif
public.login.heading.no.self.register=Mewngofnodi
public.login.subheading.sign.in=Mewngofnodi
public.login.subheading.sign.in.with.security.code=Teipiwch y cod diogelwch i fewngofnodi.
public.login.subheading.create.account=Creu cyfrif
public.login.create.account.body=Bydd angen ichi
public.login.create.account.body.to.use.service=i ddefnyddio’r gwasanaeth hwn.
Expand Down
Loading