All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fi.evolver.basics.spring.auth.JwtController Maven / Gradle / Ivy

package fi.evolver.basics.spring.auth;

import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import fi.evolver.basics.spring.auth.entity.JwtToken;
import fi.evolver.basics.spring.http.MessageType;
import fi.evolver.basics.spring.http.crud.CrudController;
import fi.evolver.basics.spring.log.LogPolicy;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;

@RestController
@RequestMapping("/jwt")
@ConditionalOnProperty("authorization.secret")

public class JwtController extends CrudController {
	private final JwtAuthorization jwtAuthorization;

	@Autowired
	public JwtController(JwtAuthorization jwtAuthorization, JwtTokenRepository jwtTokenRepository) {
		super(jwtTokenRepository);
		this.jwtAuthorization = jwtAuthorization;
	}

	@Operation(summary = "Generates a new Jwt token")
	@ApiResponses(value = {
			@ApiResponse(responseCode = "200", description = "Generated JWT token including it's ID"),
			@ApiResponse(responseCode = "500", description = "Failed handling request", content = @Content)
	})
	@GetMapping("/generate")
	@LogPolicy(LogPolicy.Policy.NONE)
	@MessageType("Token")
	public ResponseEntity generateToken() {
		String jwtId = UUID.randomUUID().toString();
		String token = jwtAuthorization.generateJwtToken(jwtId);
		return ResponseEntity.ok(String.format("%s: %s", jwtId, token));
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy