PluginProbe
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.22.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.22.1
4.7.2 4.7.1 4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 All 281 releases
surecart / app / src / Middleware / LoginLinkMiddleware.php
LoginLinkMiddleware.php
76 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SureCart\Middleware;
4
5 use SureCart\Models\CustomerLink;
6 use SureCart\Models\User;
7 use Closure;
8 use SureCartCore\Requests\RequestInterface;
9 use SureCartCore\Responses\RedirectResponse;
10
11 /**
12 * Middleware for customer dashboard.
13 */
14 class LoginLinkMiddleware {
15 /**
16 * Handle the middleware.
17 *
18 * @param RequestInterface $request Request.
19 * @param Closure $next Next.
20 * @return method
21 */
22 public function handle( $request, Closure $next ) {
23 $link_id = $request->query( 'customer_link_id' );
24
25 // use original page view if no customer link id is found.
26 if ( ! $link_id ) {
27 return $next( $request );
28 }
29
30 // get the customer link by id.
31 $link = CustomerLink::with( [ 'customer' ] )->find( $link_id );
32 if ( is_wp_error( $link ) || false !== $link->expired ) {
33 return $next( $request );
34 }
35
36 // login the user using the customer id from the link.
37 $user = $link->getUser();
38 if ( $user ) {
39 $user->login();
40 return $next( $request );
41 }
42
43 $user = User::getUserBy( 'email', $link->customer->email );
44 if ( $user ) {
45 $user->login();
46 return $next( $request );
47 }
48
49 // there's no user with this email or customer id. Let's create one.
50 if ( $link->customer->email ?? false ) {
51 $user = User::create(
52 [
53 'user_name' => sanitize_user( $link->customer->email, true ),
54 'user_email' => $link->customer->email,
55 ]
56 );
57
58 // handle error creating user.
59 if ( is_wp_error( $user ) ) {
60 return $user;
61 }
62
63 if ( $user ) {
64 $linked = $user->setCustomerId( $link->customer->id, $link->customer->live_mode ? 'live' : 'test' );
65 if ( is_wp_error( $linked ) ) {
66 return $next( $request );
67 }
68 $user->login();
69 return $next( $request );
70 }
71 }
72
73 return $next( $request );
74 }
75 }
76