Trang web thương mại điện tử được thiết lập để phục vụ một phần hoặc toàn bộ quy trình của hoạt động mua bán hàng hóa hay cung ứng dịch vụ, từ trưng bày giới thiệu hàng hóa, dịch vụ đến giao kết hợp đồng, cung ứng dịch vụ, thanh toán và dịch vụ sau bán hàng.
// Refresh token
@GetMapping(TOKEN_VIEW + REFRESH_VIEW)
public void refreshToken(HttpServletRequest request, HttpServletResponse response)
throws StreamWriteException, DatabindException, IOException {
var header = request.getHeader(AUTHORIZATION);
// check token format in authorization header
if (header != null && header.startsWith(TOKEN_PREFIX)) {
// get token from authorization header
try {
var refreshToken = header.substring(TOKEN_PREFIX.length());
var algorithm = HMAC256(SECRET_KEY.getBytes());
var user = userService.getUser(require(algorithm).build().verify(refreshToken).getSubject());
var tokens = new HashMap<>();
tokens.put(ACCESS_TOKEN_KEY,
create().withSubject(user.getEmail())
.withExpiresAt(new Date(currentTimeMillis() + EXPIRATION_TIME))
.withIssuer(request.getRequestURL().toString())
.withClaim(ROLE_CLAIM_KEY,
singleton(new Role(ROLE_PREFIX + user.getRole().getName().toUpperCase()))
.stream().map(Role::getName).collect(toList()))
.sign(algorithm));
tokens.put(REFRESH_TOKEN_KEY, refreshToken);
response.setContentType(APPLICATION_JSON_VALUE);
new ObjectMapper().writeValue(response.getOutputStream(), tokens);
} catch (Exception e) {
var errorMsg = e.getMessage();
response.setHeader(ERROR_HEADER_KEY, errorMsg);
response.setStatus(FORBIDDEN.value());
var error = new HashMap<>();
error.put(ERROR_MESSAGE_KEY, errorMsg);
response.setContentType(APPLICATION_JSON_VALUE);
new ObjectMapper().writeValue(response.getOutputStream(), error);
}
} else {
throw new RuntimeException("Refresh token is missing");
}
}
Nhóm NOHIT gồm các thành viên:
- Nguyễn Đặng Trường An (team lead)
- Trần Gia Bảo (đã rời nhóm)
- Cao Đức Mạnh
- Đặng Bá Quí (đã rời nhóm)
- Nguyễn Tiến Đạt
- Java JWT » 4.0.0