@@ -74,21 +74,7 @@ public function validate(
7474 $ message = '' ;
7575 // Below, we do not have a ticket or the ticket does not meet the very basic criteria that allow
7676 // any further handling
77- if (empty ($ serviceTicket )) {
78- // No ticket
79- $ message = 'Ticket ' . var_export ($ ticket , true ) . ' not recognized ' ;
80- $ failed = true ;
81- } elseif ($ method === 'proxyValidate ' && !$ this ->ticketFactory ->isProxyTicket ($ serviceTicket )) {
82- // proxyValidate but not a proxy ticket
83- $ message = 'Ticket ' . var_export ($ ticket , true ) . ' is not a proxy ticket. ' ;
84- $ failed = true ;
85- } elseif ($ method === 'serviceValidate ' && !$ this ->ticketFactory ->isServiceTicket ($ serviceTicket )) {
86- // serviceValidate but not a service ticket
87- $ message = 'Ticket ' . var_export ($ ticket , true ) . ' is not a service ticket. ' ;
88- $ failed = true ;
89- }
90-
91- if ($ failed ) {
77+ if ($ message = $ this ->validateServiceTicket ($ serviceTicket , $ ticket , $ method )) {
9278 $ finalMessage = 'casserver:validate: ' . $ message ;
9379 Logger::error (__METHOD__ . ':: ' . $ finalMessage );
9480
@@ -185,4 +171,27 @@ public function validate(
185171 Response::HTTP_OK ,
186172 );
187173 }
174+
175+ /**
176+ * @param array|null $serviceTicket
177+ *
178+ * @return ?string Message on failure, null on success
179+ */
180+ private function validateServiceTicket (?array $ serviceTicket , string $ ticket , string $ method ): ?string
181+ {
182+ if (empty ($ serviceTicket )) {
183+ return 'Ticket ' . var_export ($ ticket , true ) . ' not recognized ' ;
184+ }
185+
186+ $ isServiceTicket = $ this ->ticketFactory ->isServiceTicket ($ serviceTicket );
187+ if ($ method === 'serviceValidate ' && !$ isServiceTicket ) {
188+ return 'Ticket ' . var_export ($ ticket , true ) . ' is not a service ticket. ' ;
189+ }
190+
191+ if ($ method === 'proxyValidate ' && !$ isServiceTicket && !$ this ->ticketFactory ->isProxyTicket ($ serviceTicket )) {
192+ return 'Ticket ' . var_export ($ ticket , true ) . ' is not a proxy ticket. ' ;
193+ }
194+
195+ return null ;
196+ }
188197}
0 commit comments