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 { 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)); } }