2023-05-28 17:36:28 +07:00

44 lines
1.7 KiB
Java

package com.iconplus.smartproc.service.authentication;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.context.ApiContext;
import com.iconplus.smartproc.helper.model.EmptyRequest;
import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.entity.TokenManagement;
import com.iconplus.smartproc.repository.TokenManagementRepository;
import com.iconplus.smartproc.util.Constants;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
@Service
public class LogoutService implements BaseService<EmptyRequest, EmptyResponse> {
private ApiContext apiContext;
private TokenManagementRepository tokenManagementRepository;
public LogoutService(ApiContext apiContext,
TokenManagementRepository tokenManagementRepository) {
this.apiContext = apiContext;
this.tokenManagementRepository = tokenManagementRepository;
}
@Override
public EmptyResponse execute(EmptyRequest input) {
String accessToken = apiContext.getAuthorization();
TokenManagement tokenManagement = getTokenManagement(accessToken);
tokenManagement.setIsDelete(true);
tokenManagementRepository.save(tokenManagement);
return new EmptyResponse();
}
private TokenManagement getTokenManagement(String accessToken) {
return tokenManagementRepository.findByAccessTokenAndIsDeleteFalse(accessToken)
.orElseThrow(() -> new BusinessException(HttpStatus.CONFLICT,
Constants.ERR_CODE_40038,
Constants.ERR_TITLE_40038,
Constants.ERR_MESSAGE_40038));
}
}