@@ -83,7 +83,7 @@ public function __construct(
8383 * @param Request $request The request object.
8484 * @param Closure $next The next action.
8585 *
86- * @throws SignatureVerificationException If HMAC verification fails.
86+ * @throws SignatureVerificationException|HttpException If HMAC verification fails.
8787 *
8888 * @return mixed
8989 */
@@ -102,9 +102,12 @@ public function handle(Request $request, Closure $next)
102102 }
103103
104104 if (!Util::useNativeAppBridge ()) {
105- $ storeResult = !$ this ->isApiRequest ($ request ) && $ this ->checkPreviousInstallation ($ request );
105+ $ shop = $ this ->getShopIfAlreadyInstalled ($ request );
106+ $ storeResult = !$ this ->isApiRequest ($ request ) && $ shop ;
106107
107108 if ($ storeResult ) {
109+ $ this ->loginFromShop ($ shop );
110+
108111 return $ next ($ request );
109112 }
110113 }
@@ -512,4 +515,36 @@ protected function checkPreviousInstallation(Request $request): bool
512515
513516 return $ shop && $ shop ->password && ! $ shop ->trashed ();
514517 }
518+
519+ /**
520+ * Get shop model if there is a store record in the database.
521+ *
522+ * @param Request $request The request object.
523+ *
524+ * @return ?ShopModel
525+ */
526+ protected function getShopIfAlreadyInstalled (Request $ request ): ?ShopModel
527+ {
528+ $ shop = $ this ->shopQuery ->getByDomain (ShopDomain::fromRequest ($ request ), [], true );
529+
530+ return $ shop && $ shop ->password && ! $ shop ->trashed () ? $ shop : null ;
531+ }
532+
533+ /**
534+ * Login and validate store
535+ *
536+ * @param ShopModel $shop
537+ *
538+ * @return void
539+ */
540+ protected function loginFromShop (ShopModel $ shop ): void
541+ {
542+ // Override auth guard
543+ if (($ guard = Util::getShopifyConfig ('shop_auth_guard ' ))) {
544+ $ this ->auth ->setDefaultDriver ($ guard );
545+ }
546+
547+ // All is well, login the shop
548+ $ this ->auth ->login ($ shop );
549+ }
515550}
0 commit comments