1 package com.atlassian.sal.core.auth;
2
3 import com.atlassian.sal.api.ApplicationProperties;
4 import com.atlassian.sal.api.auth.LoginUriProvider;
5 import com.atlassian.seraph.config.SecurityConfigFactory;
6
7 import java.io.UnsupportedEncodingException;
8 import java.net.URI;
9 import java.net.URISyntaxException;
10 import java.net.URLEncoder;
11
12
13
14
15 public class SeraphLoginUriProvider implements LoginUriProvider
16 {
17 private final ApplicationProperties applicationProperties;
18
19 public SeraphLoginUriProvider(ApplicationProperties applicationProperties)
20 {
21 this.applicationProperties = applicationProperties;
22 }
23
24 public URI getLoginUri(final URI returnUri)
25 {
26 final String loginURL = SecurityConfigFactory.getInstance().getLoginURL();
27 try
28 {
29 final String newUrl = loginURL.replace("${originalurl}", URLEncoder.encode(returnUri.toString(), "UTF-8"));
30 return new URI(applicationProperties.getBaseUrl() + newUrl);
31 }
32 catch (final URISyntaxException e)
33 {
34 throw new RuntimeException("Error getting login uri. LoginUrl = " + loginURL + ", ReturnUri = " + returnUri, e);
35 }
36 catch (final UnsupportedEncodingException e)
37 {
38 throw new RuntimeException("Error getting login uri. LoginUrl = " + loginURL + ", ReturnUri = " + returnUri, e);
39 }
40 }
41 }