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