package org.constellation.services.component;
import org.constellation.configuration.AppProperty;
import org.constellation.configuration.Application;
import org.constellation.token.TokenExtender;
import org.constellation.token.TokenUtils;
import org.springframework.core.env.Environment;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.UUID;
public class TokenService implements TokenExtender {
private String secret = "cstl-sdi";
@Inject
private Environment env;
@PostConstruct
public void init() {
secret = Application.getProperty(AppProperty.CSTL_TOKEN_SECRET, UUID.randomUUID().toString());
}
public String createToken(String username) {
return TokenUtils.createToken(username, secret);
}
public boolean validate(String access_token) {
return TokenUtils.validateToken(access_token, secret);
}
private String getUserName(String access_token) {
return TokenUtils.getUserNameFromToken(access_token);
}
public String getUserName(HttpServletRequest request) {
String token = TokenUtils.extractAccessToken(request);
//FIXME We should use cache here.
if (token == null)
return null;
if (validate(token))
return getUserName(token);
return null;
}
@Override
public String extend(String token, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
return TokenUtils.createToken(token, secret);
}
}