package com.plannaplan.controllers; import com.plannaplan.exceptions.UserNotFoundException; import com.plannaplan.security.CasValidationExcepiton; import com.plannaplan.security.CasValidator; import com.plannaplan.services.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; @RestController @CrossOrigin @Api(tags = { "Token" }, value = "Token", description = "Enpoints to get authorization.") public class TokenController { private final static String SERVICE_URL = "http://localhost:3000"; @Autowired private UserService userService; @GetMapping("/token") public ResponseEntity getToken(@RequestParam("ticket") final String ticket) { final CasValidator validator = new CasValidator(SERVICE_URL, ticket); try { String authority = validator.validate(); String token = this.userService.login(authority); return new ResponseEntity<>(token, HttpStatus.OK); } catch (CasValidationExcepiton e) { return new ResponseEntity<>("Wrong ticket", HttpStatus.UNAUTHORIZED); } catch (UserNotFoundException e) { return new ResponseEntity<>("User not found", HttpStatus.NOT_FOUND); } catch (Exception e) { return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } } }