View Javadoc

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   * @since 2.0.2
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  }