From d48f2bf62bd933802b9950c072956b646b98381a Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Thu, 15 Sep 2016 14:11:31 +0200 Subject: [PATCH] Add a map from error codes to titles/descriptions --- lib/SimpleSAML/Error/Error.php | 4 +- lib/SimpleSAML/Error/ErrorCodes.php | 188 ++++++++++++++++++++++++++++ 2 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 lib/SimpleSAML/Error/ErrorCodes.php diff --git a/lib/SimpleSAML/Error/Error.php b/lib/SimpleSAML/Error/Error.php index 542c35be43..0e26bf5527 100644 --- a/lib/SimpleSAML/Error/Error.php +++ b/lib/SimpleSAML/Error/Error.php @@ -100,8 +100,8 @@ public function __construct($errorCode, Exception $cause = null, $httpCode = nul $this->dictTitle = '{'.$this->module.':errors:title_'.$moduleCode[1].'}'; $this->dictDescr = '{'.$this->module.':errors:descr_'.$moduleCode[1].'}'; } else { - $this->dictTitle = '{errors:title_'.$this->errorCode.'}'; - $this->dictDescr = '{errors:descr_'.$this->errorCode.'}'; + $this->dictTitle = SimpleSAML\Error\ErrorCodes::getErrorCodeTitle($this->errorCode); + $this->dictDescr = SimpleSAML\Error\ErrorCodes::getErrorCodeDescription($this->errorCode); } if (!empty($this->parameters)) { diff --git a/lib/SimpleSAML/Error/ErrorCodes.php b/lib/SimpleSAML/Error/ErrorCodes.php new file mode 100644 index 0000000000..e4d0819509 --- /dev/null +++ b/lib/SimpleSAML/Error/ErrorCodes.php @@ -0,0 +1,188 @@ + + * @package SimpleSAMLphp + */ + +namespace SimpleSAML\Error; + +class ErrorCodes +{ + /** + * Fetch all default translation strings for error code titles. + * + * @return array A map from error code to error code title + */ + final public static function defaultGetAllErrorCodeTitles() + { + return array( + 'ACSPARAMS' => \SimpleSAML\Locale\Translate::noop('{error:title_ACSPARAMS}'), + 'ARSPARAMS' => \SimpleSAML\Locale\Translate::noop('{error:title_ARSPARAMS}'), + 'AUTHSOURCEERROR' => \SimpleSAML\Locale\Translate::noop('{error:title_AUTHSOURCEERROR}'), + 'BADREQUEST' => \SimpleSAML\Locale\Translate::noop('{error:title_BADREQUEST}'), + 'CASERROR' => \SimpleSAML\Locale\Translate::noop('{error:title_CASERROR}'), + 'CONFIG' => \SimpleSAML\Locale\Translate::noop('{error:title_CONFIG}'), + 'CREATEREQUEST' => \SimpleSAML\Locale\Translate::noop('{error:title_CREATEREQUEST}'), + 'DISCOPARAMS' => \SimpleSAML\Locale\Translate::noop('{error:title_DISCOPARAMS}'), + 'GENERATEAUTHNRESPONSE' => \SimpleSAML\Locale\Translate::noop('{error:title_GENERATEAUTHNRESPONSE}'), + 'INVALIDCERT' => \SimpleSAML\Locale\Translate::noop('{error:title_INVALIDCERT}'), + 'LDAPERROR' => \SimpleSAML\Locale\Translate::noop('{error:title_LDAPERROR}'), + 'LOGOUTINFOLOST' => \SimpleSAML\Locale\Translate::noop('{error:title_LOGOUTINFOLOST}'), + 'LOGOUTREQUEST' => \SimpleSAML\Locale\Translate::noop('{error:title_LOGOUTREQUEST}'), + 'MEMCACHEDOWN' => \SimpleSAML\Locale\Translate::noop('{error:title_MEMCACHEDOWN}'), + 'METADATA' => \SimpleSAML\Locale\Translate::noop('{error:title_METADATA}'), + 'METADATANOTFOUND' => \SimpleSAML\Locale\Translate::noop('{error:title_METADATANOTFOUND}'), + 'NOACCESS' => \SimpleSAML\Locale\Translate::noop('{error:title_NOACCESS}'), + 'NOCERT' => \SimpleSAML\Locale\Translate::noop('{error:title_NOCERT}'), + 'NORELAYSTATE' => \SimpleSAML\Locale\Translate::noop('{error:title_NORELAYSTATE}'), + 'NOSTATE' => \SimpleSAML\Locale\Translate::noop('{error:title_NOSTATE}'), + 'NOTFOUND' => \SimpleSAML\Locale\Translate::noop('{error:title_NOTFOUND}'), + 'NOTFOUNDREASON' => \SimpleSAML\Locale\Translate::noop('{error:title_NOTFOUNDREASON}'), + 'NOTSET' => \SimpleSAML\Locale\Translate::noop('{error:title_NOTSET}'), + 'NOTVALIDCERT' => \SimpleSAML\Locale\Translate::noop('{error:title_NOTVALIDCERT}'), + 'PROCESSASSERTION' => \SimpleSAML\Locale\Translate::noop('{error:title_PROCESSASSERTION}'), + 'PROCESSAUTHNREQUEST' => \SimpleSAML\Locale\Translate::noop('{error:title_PROCESSAUTHNREQUEST}'), + 'RESPONSESTATUSNOSUCCESS' => \SimpleSAML\Locale\Translate::noop('{error:title_RESPONSESTATUSNOSUCCESS}'), + 'SLOSERVICEPARAMS' => \SimpleSAML\Locale\Translate::noop('{error:title_SLOSERVICEPARAMS}'), + 'SSOPARAMS' => \SimpleSAML\Locale\Translate::noop('{error:title_SSOPARAMS}'), + 'UNHANDLEDEXCEPTION' => \SimpleSAML\Locale\Translate::noop('{error:title_UNHANDLEDEXCEPTION}'), + 'UNKNOWNCERT' => \SimpleSAML\Locale\Translate::noop('{error:title_UNKNOWNCERT}'), + 'USERABORTED' => \SimpleSAML\Locale\Translate::noop('{error:title_USERABORTED}'), + 'WRONGUSERPASS' => \SimpleSAML\Locale\Translate::noop('{error:title_WRONGUSERPASS}'), + ); + } + + + /** + * Fetch all translation strings for error code titles. + * + * Extend this to add error codes. + * + * @return array A map from error code to error code title + */ + public static function getAllErrorCodeTitles() + { + return self::defaultGetAllErrorCodeTitles(); + } + + + /** + * Fetch all default translation strings for error code descriptions. + * + * @return string A map from error code to error code description + */ + final public static function defaultGetAllErrorCodeDescriptions() + { + return array( + 'ACSPARAMS' => \SimpleSAML\Locale\Translate::noop('{error:descr_ACSPARAMS}'), + 'ARSPARAMS' => \SimpleSAML\Locale\Translate::noop('{error:descr_ARSPARAMS}'), + 'AUTHSOURCEERROR' => \SimpleSAML\Locale\Translate::noop('{error:descr_AUTHSOURCEERROR}'), + 'BADREQUEST' => \SimpleSAML\Locale\Translate::noop('{error:descr_BADREQUEST}'), + 'CASERROR' => \SimpleSAML\Locale\Translate::noop('{error:descr_CASERROR}'), + 'CONFIG' => \SimpleSAML\Locale\Translate::noop('{error:descr_CONFIG}'), + 'CREATEREQUEST' => \SimpleSAML\Locale\Translate::noop('{error:descr_CREATEREQUEST}'), + 'DISCOPARAMS' => \SimpleSAML\Locale\Translate::noop('{error:descr_DISCOPARAMS}'), + 'GENERATEAUTHNRESPONSE' => \SimpleSAML\Locale\Translate::noop('{error:descr_GENERATEAUTHNRESPONSE}'), + 'INVALIDCERT' => \SimpleSAML\Locale\Translate::noop('{error:descr_INVALIDCERT}'), + 'LDAPERROR' => \SimpleSAML\Locale\Translate::noop('{error:descr_LDAPERROR}'), + 'LOGOUTINFOLOST' => \SimpleSAML\Locale\Translate::noop('{error:descr_LOGOUTINFOLOST}'), + 'LOGOUTREQUEST' => \SimpleSAML\Locale\Translate::noop('{error:descr_LOGOUTREQUEST}'), + 'MEMCACHEDOWN' => \SimpleSAML\Locale\Translate::noop('{error:descr_MEMCACHEDOWN}'), + 'METADATA' => \SimpleSAML\Locale\Translate::noop('{error:descr_METADATA}'), + 'METADATANOTFOUND' => \SimpleSAML\Locale\Translate::noop('{error:descr_METADATANOTFOUND}'), + 'NOACCESS' => \SimpleSAML\Locale\Translate::noop('{error:descr_NOACCESS}'), + 'NOCERT' => \SimpleSAML\Locale\Translate::noop('{error:descr_NOCERT}'), + 'NORELAYSTATE' => \SimpleSAML\Locale\Translate::noop('{error:descr_NORELAYSTATE}'), + 'NOSTATE' => \SimpleSAML\Locale\Translate::noop('{error:descr_NOSTATE}'), + 'NOTFOUND' => \SimpleSAML\Locale\Translate::noop('{error:descr_NOTFOUND}'), + 'NOTFOUNDREASON' => \SimpleSAML\Locale\Translate::noop('{error:descr_NOTFOUNDREASON}'), + 'NOTSET' => \SimpleSAML\Locale\Translate::noop('{error:descr_NOTSET}'), + 'NOTVALIDCERT' => \SimpleSAML\Locale\Translate::noop('{error:descr_NOTVALIDCERT}'), + 'PROCESSASSERTION' => \SimpleSAML\Locale\Translate::noop('{error:descr_PROCESSASSERTION}'), + 'PROCESSAUTHNREQUEST' => \SimpleSAML\Locale\Translate::noop('{error:descr_PROCESSAUTHNREQUEST}'), + 'RESPONSESTATUSNOSUCCESS' => \SimpleSAML\Locale\Translate::noop('{error:descr_RESPONSESTATUSNOSUCCESS}'), + 'SLOSERVICEPARAMS' => \SimpleSAML\Locale\Translate::noop('{error:descr_SLOSERVICEPARAMS}'), + 'SSOPARAMS' => \SimpleSAML\Locale\Translate::noop('{error:descr_SSOPARAMS}'), + 'UNHANDLEDEXCEPTION' => \SimpleSAML\Locale\Translate::noop('{error:descr_UNHANDLEDEXCEPTION}'), + 'UNKNOWNCERT' => \SimpleSAML\Locale\Translate::noop('{error:descr_UNKNOWNCERT}'), + 'USERABORTED' => \SimpleSAML\Locale\Translate::noop('{error:descr_USERABORTED}'), + 'WRONGUSERPASS' => \SimpleSAML\Locale\Translate::noop('{error:descr_WRONGUSERPASS}'), + ); + } + + /** + * Fetch all translation strings for error code descriptions. + * + * Extend this to add error codes. + * + * @return string A map from error code to error code description + */ + public static function getAllErrorCodeDescriptions() + { + return self::defaultGetAllErrorCodeDescriptions(); + } + + + /** + * Get a map of both errorcode titles and descriptions + * + * Convenience-method for template-callers + * + * @return array An array containing both errorcode maps. + */ + public static function getAllErrorCodeMessages() + { + return array( + 'title' => self::getAllErrorCodeTitles(), + 'descr' => self::getAllErrorCodeDescriptions(), + ); + } + + + /** + * Fetch a translation string for a title for a given error code. + * + * @param string $errorCode The error code to look up + * + * @return string A string to translate + */ + public static function getErrorCodeTitle($errorCode) + { + $errorCodeTitles = self::getAllErrorCodeTitles(); + return $errorCodeTitles[$errorCode]; + } + + + /** + * Fetch a translation string for a description for a given error code. + * + * @param string $errorCode The error code to look up + * + * @return string A string to translate + */ + public static function getErrorCodeDescription($errorCode) + { + $errorCodeDescriptions = self::getAllErrorCodeDescriptions(); + return $errorCodeDescriptions[$errorCode]; + } + + + /** + * Get both title and description for a specific error code + * + * Convenience-method for template-callers + * + * @param string $errorCode The error code to look up + * + * @return array An array containing both errorcode strings. + */ + public static function getErrorCodeMessage($errorCode) + { + return array( + 'title' => self::getErrorCodeTitle($errorCode), + 'descr' => self::getErrorCodeDescription($errorCode), + ); + } +}