backend/restservice/src/main/java/com/plannaplan/controllers/TokenBasedController.java
2021-01-16 13:57:58 +01:00

38 lines
1.3 KiB
Java
Executable File

package com.plannaplan.controllers;
import java.util.Optional;
import com.plannaplan.entities.User;
import com.plannaplan.exceptions.UserNotFoundException;
import com.plannaplan.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.authentication.AnonymousAuthenticationToken;
/**
* Abstract class for controllers that requires token to extra authorize action
* beyond spring security
*/
public abstract class TokenBasedController {
@Autowired
protected UserService userService;
public TokenBasedController() {
}
/**
* @return get currect user based no current spring context
* @throws UserNotFoundException if user was not fount
*/
protected Optional<User> getCurrentUser() throws UserNotFoundException {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (!(authentication instanceof AnonymousAuthenticationToken)) {
return Optional.of(this.userService.getUserByEmail(authentication.getName()));
} else {
return Optional.empty();
}
}
}