Exemple #1
0
        public IActionResult Logoff(SNWLLogoffRequest model)
        {
            SNWLLogoffReplyXMLResponse responseModel;

            if (!ModelState.IsValid)
            {
                return(new ObjectResult(ResponseHelper.Logoff.InvalidOrMissingCGIParamResponse()));
            }

            switch (_stateProvider.LogoffReplyCode)
            {
            case ResponseHelper.Logoff.LOGOFF_SUCCEEDED:
                responseModel = ResponseHelper.Logoff.LogoffSucceededResponse();
                break;

            case ResponseHelper.Logoff.INVALID_SESSION_ID:
                responseModel = ResponseHelper.Logoff.InvalidSessionIDResponse();
                break;

            case ResponseHelper.Logoff.INVALID_OR_MISSING_PARAM:
                responseModel = ResponseHelper.Logoff.InvalidOrMissingCGIParamResponse();
                break;

            case ResponseHelper.Logoff.INVALID_HMAC:
                responseModel = ResponseHelper.Logoff.InvalidHMACResponse();
                break;

            default:
            case ResponseHelper.Logoff.INTERNAL_ERROR:
                responseModel = ResponseHelper.Logoff.InternalErrorResponse();
                break;
            }

            // local bookkeeping
            _stateProvider.ProcessLogoutRequest(model);

            return(new ObjectResult(responseModel));
        }