determine mail correctly
This commit is contained in:
parent
e8354c3f6e
commit
b07de9f2bc
@ -1,7 +1,6 @@
|
||||
package de.jottyfan.camporganizer.module.admin;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.validation.Valid;
|
||||
import java.security.Principal;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@ -22,6 +21,8 @@ import de.jottyfan.camporganizer.module.admin.model.DocumentBean;
|
||||
import de.jottyfan.camporganizer.module.admin.model.LocationBean;
|
||||
import de.jottyfan.camporganizer.module.camplist.CommonController;
|
||||
import de.jottyfan.camporganizer.module.mail.MailBean;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -40,10 +41,10 @@ public class AdminController extends CommonController {
|
||||
private String from;
|
||||
|
||||
@GetMapping("/admin/mail")
|
||||
public String getMail(Model model, HttpServletRequest request) {
|
||||
public String getMail(Model model, Principal principal) {
|
||||
MailBean mailBean = new MailBean();
|
||||
mailBean.setFrom(from);
|
||||
mailBean.getTo().add(getCurrentEmail(request));
|
||||
mailBean.getTo().add(getCurrentEmail(principal));
|
||||
model.addAttribute("bean", mailBean);
|
||||
return "/admin/mail";
|
||||
}
|
||||
|
@ -2,8 +2,14 @@ package de.jottyfan.camporganizer.module.camplist;
|
||||
|
||||
import java.security.Principal;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.context.SecurityContext;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
|
||||
import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
|
||||
import org.springframework.security.oauth2.core.user.OAuth2User;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
|
||||
/**
|
||||
@ -12,9 +18,7 @@ import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
*
|
||||
*/
|
||||
public abstract class CommonController {
|
||||
|
||||
@Autowired
|
||||
private Principal principal;
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
|
||||
/**
|
||||
* try to get current keycloak user
|
||||
@ -23,7 +27,7 @@ public abstract class CommonController {
|
||||
* @return the preferred username or null
|
||||
*/
|
||||
public String getCurrentUser(Principal principal) {
|
||||
return principal.getName();
|
||||
return principal == null ? null : principal.getName();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -33,17 +37,31 @@ public abstract class CommonController {
|
||||
* @return the email or null
|
||||
*/
|
||||
public String getCurrentEmail(Principal principal) {
|
||||
if (principal instanceof UserDetails) {
|
||||
UserDetails userDetails = (UserDetails) principal;
|
||||
return userDetails.getEmail();
|
||||
if (principal instanceof OAuth2AuthenticationToken) {
|
||||
OAuth2AuthenticationToken token = (OAuth2AuthenticationToken) principal;
|
||||
if (token != null) {
|
||||
OAuth2User user = token.getPrincipal();
|
||||
if (user != null) {
|
||||
return user.getAttribute("email");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
LOGGER.error("could not find email for {}", principal);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@ModelAttribute("currentUser")
|
||||
public String getCurrentUser() {
|
||||
return getCurrentUser(principal);
|
||||
SecurityContext context = SecurityContextHolder.getContext();
|
||||
if (context != null) {
|
||||
Authentication authentication = context.getAuthentication();
|
||||
if (authentication != null) {
|
||||
DefaultOidcUser dou = (DefaultOidcUser) authentication.getPrincipal();
|
||||
return dou == null ? null : dou.getName();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user