View Javadoc

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