Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • perun/perun-proxyidp/v1/perun-spRegistration-app
1 result
Show changes
Commits on Source (3)
## [5.0.2](https://gitlab.ics.muni.cz/perun-proxy-aai/java/perun-spRegistration-app/compare/v5.0.1...v5.0.2) (2023-03-14)
### Bug Fixes
* 🐛 fix login loop and default angular base href ([b632418](https://gitlab.ics.muni.cz/perun-proxy-aai/java/perun-spRegistration-app/commit/b63241818c083448bdb146a4eaa80b4b9f086783))
## [5.0.1](https://gitlab.ics.muni.cz/perun-proxy-aai/java/perun-spRegistration-app/compare/v5.0.0...v5.0.1) (2023-03-14)
......
......@@ -12,7 +12,7 @@
<groupId>cz.metacentrum.perun</groupId>
<artifactId>spRegistration</artifactId>
<version>5.0.1</version>
<version>5.0.2</version>
<packaging>war</packaging>
<name>perun-spRegistration</name>
......@@ -29,8 +29,7 @@
<bc-mail.version>${bc.version}</bc-mail.version>
<bc-pkix.version>${bc.version}</bc-pkix.version>
<!-- OTHER -->
<server.contextPath>/spreg</server.contextPath>
<angular.base.href>${server.contextPath}/</angular.base.href>
<angular.base.href>/</angular.base.href>
<angular.api.url>http://localhost:8080/spreg/api</angular.api.url>
</properties>
......
......@@ -35,6 +35,21 @@ public class AuthSuccessHandler extends SavedRequestAwareAuthenticationSuccessHa
Authentication authentication)
throws ServletException, IOException
{
trySetUser(
request,
authentication,
appBeansContainer.getApplicationProperties().getProxyIdentifier(),
appBeansContainer.getAttributesProperties().getNames().getUserEmail(),
appBeansContainer.getPerunAdapter()
);
super.onAuthenticationSuccess(request, response, authentication);
}
public static void trySetUser(HttpServletRequest request,
Authentication authentication,
String proxyIdentifier,
String userEmailAttr,
PerunAdapter perunAdapter) {
if (authentication != null && authentication.getAuthorities() != null) {
log.debug("User '{}' has logged in", authentication.getName());
......@@ -43,8 +58,7 @@ public class AuthSuccessHandler extends SavedRequestAwareAuthenticationSuccessHa
boolean isAdmin = authentication.getAuthorities() != null
&& authentication.getAuthorities().contains(SecurityConfiguration.ROLE_ADMIN);
try {
User u = adapter.getUserWithEmail(sub, appBeansContainer.getApplicationProperties().getProxyIdentifier(),
appBeansContainer.getAttributesProperties().getNames().getUserEmail());
User u = perunAdapter.getUserWithEmail(sub, proxyIdentifier, userEmailAttr);
if (u != null) {
u.setAppAdmin(isAdmin);
}
......@@ -59,7 +73,6 @@ public class AuthSuccessHandler extends SavedRequestAwareAuthenticationSuccessHa
log.debug("Details: ", e);
}
}
super.onAuthenticationSuccess(request, response, authentication);
}
}
package cz.metacentrum.perun.spRegistration.web.controllers;
import cz.metacentrum.perun.spRegistration.common.configs.AppBeansContainer;
import cz.metacentrum.perun.spRegistration.common.models.User;
import cz.metacentrum.perun.spRegistration.persistence.adapters.PerunAdapter;
import cz.metacentrum.perun.spRegistration.web.AuthSuccessHandler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -19,9 +23,25 @@ public class AuthController {
public static final String SESS_ATTR_USER = "user";
private final PerunAdapter adapter;
private final AppBeansContainer appBeansContainer;
public AuthController(PerunAdapter adapter, AppBeansContainer appBeansContainer) {
super();
this.adapter = adapter;
this.appBeansContainer = appBeansContainer;
}
@GetMapping(path = "/api/getUser")
public User getUser(HttpServletRequest req) {
public User getUser(HttpServletRequest req, Authentication authentication) {
HttpSession sess = req.getSession();
AuthSuccessHandler.trySetUser(
req,
authentication,
appBeansContainer.getApplicationProperties().getProxyIdentifier(),
appBeansContainer.getAttributesProperties().getNames().getUserEmail(),
appBeansContainer.getPerunAdapter()
);
if (sess == null || sess.getAttribute(SESS_ATTR_USER) == null) {
return null;
}
......