PluginProbe
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! / 2.0.0
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! v2.0.0
3.7.5 3.7.4 3.7.3 3.7.2 1-final 3.7.1 3.7.0 3.6.8 3.6.7 3.6.6 3.6.5 3.6.4 3.6.3 3.6.2 3.6.1 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.10 All 111 releases
← All changes | includes/API/Login.php +128 -198 3.1.12.0.0 View file →
@@ -6,242 +6,172 @@
6 6 use Templately\Utils\Helper;
7 7 use Templately\Utils\Options;
8 8
9 9 class Login extends API {
10 - public function permission_check( WP_REST_Request $request ) {
10 + public function permission_check( WP_REST_Request $request ) {
11 11 $this->request = $request;
12 - $_route = $request->get_route();
13 - if ( '/templately/v1/login' === $_route ) {
14 - return true;
15 - }
12 + return true;
13 + }
16 14
17 - if ( '/templately/v1/pricing' === $_route ) {
18 - return true;
19 - }
20 -
21 - return parent::permission_check( $request );
22 - }
23 -
24 - public function register_routes() {
25 - $this->post( 'login', [$this, 'login'] );
26 - $this->post( 'logout', [$this, 'logout'] );
27 - $this->get( 'is-signed', [$this, 'is_signed'] );
28 - $this->get( 'pricing', [$this, 'pricing'] );
29 - }
30 -
31 - public function pricing(){
32 - $data = get_transient( "templately_subscriptions" );
33 -
34 - if( is_array( $data ) && ! empty( $data ) ) {
35 - return $data;
36 - }
37 -
38 - $query = 'id, price, name, discounted_price, type, sites';
39 - $response = $this->http()->query(
40 - 'subscriptionPlans',
41 - $query
42 - )->post();
43 -
44 - set_transient( "templately_subscriptions", $response, WEEK_IN_SECONDS );
45 -
46 - return $response;
15 + public function register_routes() {
16 + $this->post( 'login', [ $this, 'login' ] );
17 + $this->post( 'logout', [ $this, 'logout' ] );
18 + $this->get( 'is-signed', [ $this, 'is_signed' ] );
47 19 }
48 20
49 - public function login() {
50 - $errors = [];
51 - $_ip = Helper::get_ip();
52 - $_site_url = home_url( '/' );
21 + public function login(){
22 + $errors = [];
23 + $_ip = Helper::get_ip();
24 + $_site_url = home_url( '/' );
53 25
54 - $global_signin = (bool) $this->get_param( 'global_signin', false );
55 - $viaAPI = (bool) $this->get_param( 'viaAPI', false );
56 - $email = $this->get_param( 'email', '', 'sanitize_email' );
57 - $password = $this->get_param( 'password' );
26 + $global_signin = (bool) $this->get_param( 'global_signin', false );
27 + $viaAPI = (bool) $this->get_param( 'viaAPI', false );
28 + $email = $this->get_param( 'email', '', 'sanitize_email' );
29 + $password = $this->get_param( 'password' );
58 30
59 - $funcArgs = [
60 - 'ip' => $_ip,
61 - 'site_url' => $_site_url
62 - ];
31 + $funcArgs = [
32 + 'ip' => $_ip,
33 + 'site_url' => $_site_url,
34 + ];
63 35
64 - if ( $viaAPI ) {
65 - $api_key = $this->get_param( 'api_key' );
66 - $funcArgs['api_key'] = $api_key;
36 + if( $viaAPI ) {
37 + $api_key = $this->get_param( 'api_key' );
38 + $funcArgs['api_key'] = $api_key;
67 39
68 - if ( empty( $api_key ) ) {
69 - $errors['api_key'] = __( 'API Key field cannot be empty.', 'templately' );
70 - }
71 - } else {
72 - $funcArgs['email'] = $email;
73 - $funcArgs['password'] = addcslashes( $password, '"' );
40 + if ( empty( $api_key ) ) {
41 + $errors['api_key'] = __( 'API Key field cannot be empty.', 'templately' );
42 + }
43 + } else {
44 + $funcArgs['email'] = $email;
45 + $funcArgs['password'] = $password;
74 46
75 - if ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
76 - $errors['email'] = __( 'Make sure you have given a valid email address.', 'templately' );
77 - }
47 + if ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
48 + $errors['email'] = __( 'Make sure you have given a valid email address.', 'templately' );
49 + }
78 50
79 - if ( empty( $password ) ) {
80 - $errors['password'] = __( 'Password field cannot be empty.', 'templately' );
81 - }
82 - }
51 + if ( empty( $password ) ) {
52 + $errors['password'] = __( 'Password field cannot be empty.', 'templately' );
53 + }
54 + }
83 55
84 - if ( ! empty( $errors ) ) {
85 - return $this->error( 'login_error', $errors, 'login', 400 );
86 - }
56 + if( ! empty( $errors ) ) {
57 + return $this->error( 'login_error', $errors, 'login', 400 );
58 + }
87 59
88 - $query = 'status, message, user{ id, name, first_name, last_name, display_name, email, profile_photo, joined, is_verified, api_key, plan, plan_expire_at, my_cloud{ limit, usages, last_pushed }, favourites{ id, type }, show_notice, reviews{ type, type_id, rating } }';
60 + $query = 'status, message, user{ id, name, first_name, last_name, display_name, email, profile_photo, joined, is_verified, api_key, plan, plan_expire_at, my_cloud{ limit, usages, last_pushed }, favourites{ id, type } }';
89 61
90 - $response = $this->http()->mutation(
91 - $viaAPI ? 'connectWithApiKey' : 'connect',
92 - $query,
93 - $funcArgs
94 - )->post();
62 + $response = $this->http()->mutation(
63 + $viaAPI ? 'connectWithApiKey' : 'connect',
64 + $query,
65 + $funcArgs
66 + )->post();
95 67
96 - if ( is_wp_error( $response ) ) {
97 - return $response;
98 - }
68 + if ( $global_signin && ! Login::is_globally_signed() ) {
69 + Options::set_global_login();
70 + }
99 71
100 - if ( $global_signin && ! Login::is_globally_signed() ) {
101 - Options::set_global_login();
102 - }
72 + if ( ! empty( $response['user']['api_key'] ) ) {
73 + $this->utils('options')->set( 'api_key', $response['user']['api_key'] );
74 + unset( $response['user']['api_key'] );
75 + }
103 76
104 - if ( ! empty( $response['user']['api_key'] ) ) {
105 - $this->utils( 'options' )->set( 'api_key', $response['user']['api_key'] );
106 - unset( $response['user']['api_key'] );
107 - }
77 + $meta = [
78 + 'is_globally_signed' => Login::is_globally_signed(),
79 + 'signed_as_global' => Login::signed_as_global(),
80 + ];
108 81
109 - $meta = [
110 - 'is_globally_signed' => Login::is_globally_signed(),
111 - 'signed_as_global' => Login::signed_as_global()
112 - ];
82 + if( ! empty( $response['user']['my_cloud']['last_pushed'] ) ) {
83 + $_cloud_activity = unserialize( $response['user']['my_cloud']['last_pushed'] );
84 + $this->utils('options')->set( 'cloud_activity', $_cloud_activity );
85 + $meta['cloud_activity'] = $_cloud_activity;
86 + unset( $response['user']['my_cloud']['last_pushed'] );
87 + }
113 88
114 - if ( ! empty( $response['user']['my_cloud']['last_pushed'] ) ) {
115 - $_cloud_activity = unserialize( $response['user']['my_cloud']['last_pushed'] );
116 - $this->utils( 'options' )->set( 'cloud_activity', $_cloud_activity );
117 - $meta['cloud_activity'] = $_cloud_activity;
118 - unset( $response['user']['my_cloud']['last_pushed'] );
119 - }
89 + if( ! empty( $response['user']['favourites'] ) ) {
90 + $_favourites = $this->utils('helper')->normalizeFavourites( $response['user']['favourites'] );
91 + $this->utils('options')->set('favourites', $_favourites);
120 92
121 - if ( ! empty( $response['user']['favourites'] ) ) {
122 - $_favourites = $this->utils( 'helper' )->normalizeFavourites( $response['user']['favourites'] );
123 - $this->utils( 'options' )->set( 'favourites', $_favourites );
124 -
125 - unset( $response['user']['favourites'] );
126 - $meta['favourites'] = $_favourites;
127 - }
128 -
129 - if ( ! empty( $response['user']['reviews'] ) ) {
130 - $_reviews = $this->utils( 'helper' )->normalizeReviews( $response['user']['reviews'] );
131 - $this->utils( 'options' )->set( 'reviews', $_reviews );
132 -
133 - unset( $response['user']['reviews'] );
134 - $meta['reviews'] = $_reviews;
93 + unset( $response['user']['favourites'] );
94 + $meta['favourites'] = $_favourites;
135 95 }
136 96
137 - $this->utils( 'options' )->set( 'user', $response['user'] );
138 - $response['user']['meta'] = $this->user_meta( $meta );
97 + $this->utils('options')->set('user', $response['user']);
98 + $response['user']['meta'] = $this->user_meta( $meta );
139 99
140 - return $response;
141 - }
100 + return $response;
101 + }
142 102
143 - public function logout() {
144 - $response = $this->http()->mutation(
145 - 'disconnect',
146 - 'status, message, data',
147 - [
148 - 'api_key' => $this->api_key,
149 - "site_url" => home_url( '/' )
150 - ]
151 - )->post();
103 + public function logout(){
104 + // Remove All Metas
105 + $this->utils('options')
106 + ->remove('user')
107 + ->remove('favourites')
108 + ->remove('cloud_activity')
109 + ->remove('api_key')
110 + ->remove('global_login');
152 111
153 - if ( is_wp_error( $response ) ) {
154 - return $response;
155 - }
112 + if( $this->utils('options')->whoami() === 'global' ) {
113 + $this->utils('options')->remove_global_login();
114 + }
156 115
157 - if ( ! isset( $response['status'] ) || $response['status'] !== 'success' ) {
158 - return $this->error( 'logout_error', $response['message'], 'logout', 404 );
159 - }
116 + $global_user_id = $this->utils('options')->is_global();
117 + if( $global_user_id !== $this->utils('options')->current_user_id() ) {
118 + $global_user = $this->utils('options')->get( 'user', false, $global_user_id );
160 119
161 - // Remove All Metas
162 - $global_user = $this->delete();
120 + if( ! empty( $global_user ) ) {
121 + $global_user['meta'] = $this->user_meta();
122 + }
123 + }
163 124
164 - $response = [
165 - 'status' => 'success',
166 - 'message' => __( 'Logged out.', 'templately' )
167 - ];
125 + $response = [
126 + 'status' => 'success',
127 + 'message' => __( 'Logged out.', 'templately' ),
128 + ];
168 129
169 - if ( ! empty( $global_user ) ) {
170 - $response['global_user'] = $global_user;
171 - }
130 + if( ! empty( $global_user ) ) {
131 + $response['global_user'] = $global_user;
132 + }
172 133
173 - return $response;
174 - }
134 + return $response;
135 + }
175 136
176 - public function delete(){
177 - $this->utils( 'options' )
178 - ->remove( 'user' )
179 - ->remove( 'favourites' )
180 - ->remove( 'reviews' )
181 - ->remove( 'cloud_activity' )
182 - ->remove( 'api_key' )
183 - ->remove( 'global_login' )
184 - ->remove( 'total_download_counts' )
185 - ->remove( 'templates_in_clouds' );
137 + public static function is_signed(){
138 + $_response = [
139 + 'status' => 'success'
140 + ];
186 141
187 - if ( $this->utils( 'options' )->who_am_i() === 'global' ) {
188 - $this->utils( 'options' )->remove_global_login();
189 - }
142 + $_user = (new static)->utils( 'options' )->get('user', null);
190 143
191 - $global_user_id = $this->utils( 'options' )->is_global();
192 - $global_user = null;
144 + if( ! is_null( $_user ) ) {
145 + $_user['meta'] = self::get_instance()->user_meta();
146 + }
193 147
194 - if ( $global_user_id !== $this->utils( 'options' )->current_user_id() ) {
195 - $global_user = $this->utils( 'options' )->get( 'user', false, $global_user_id );
148 + if( empty( $_user ) ) {
149 + $_response['status'] = 'error';
150 + }
196 151
197 - if ( ! empty( $global_user ) ) {
198 - $global_user['meta'] = $this->user_meta();
199 - }
200 - }
152 + $_response['user'] = $_user;
201 153
202 - return $global_user;
154 + return $_response;
203 155 }
204 156
205 - public static function is_signed(): array {
206 - $_response = [
207 - 'status' => 'success'
208 - ];
157 + private function user_meta( $meta = [] ){
158 + $_meta = [
159 + 'link_account' => self::utils( 'options' )->link_account(),
160 + 'unlink_account' => self::utils( 'options' )->unlink_account(),
161 + 'is_globally_signed' => Login::is_globally_signed(),
162 + 'signed_as_global' => Login::signed_as_global(),
163 + 'starred' => self::utils('options')->get('favourites'),
164 + 'cloud_activity' => self::utils( 'options' )->get('cloud_activity'),
165 + 'has_api' => rest_sanitize_boolean( self::utils( 'options' )->get('api_key' ) ),
166 + ];
209 167
210 - $_user = ( new static )->utils( 'options' )->get( 'user', null );
168 + return array_merge( $_meta, $meta );
169 + }
211 170
212 - if ( ! is_null( $_user ) ) {
213 - $_user['meta'] = self::get_instance()->user_meta();
214 - }
215 -
216 - if ( empty( $_user ) ) {
217 - $_response['status'] = 'error';
218 - }
219 -
220 - $_response['user'] = $_user;
221 -
222 - return $_response;
223 - }
224 -
225 - public function user_meta( $meta = [] ): array {
226 - $_meta = [
227 - 'link_account' => self::utils( 'options' )->link_account(),
228 - 'unlink_account' => self::utils( 'options' )->unlink_account(),
229 - 'is_globally_signed' => Login::is_globally_signed(),
230 - 'signed_as_global' => Login::signed_as_global(),
231 - 'starred' => self::utils( 'options' )->get( 'favourites' ),
232 - 'reviews' => self::utils( 'options' )->get( 'reviews' ),
233 - 'cloud_activity' => self::utils( 'options' )->get( 'cloud_activity' ),
234 - 'has_api' => rest_sanitize_boolean( self::utils( 'options' )->get( 'api_key' ) )
235 - ];
236 -
237 - return array_merge( $_meta, $meta );
238 - }
239 -
240 - public static function is_globally_signed(): bool {
241 - return rest_sanitize_boolean( ( new static )->utils( 'options' )->is_globally_signed() );
242 - }
243 -
244 - public static function signed_as_global(): bool {
245 - return rest_sanitize_boolean( ( new static )->utils( 'options' )->signed_as_global() );
246 - }
171 + public static function is_globally_signed(){
172 + return rest_sanitize_boolean( ( new static )->utils('options')->is_globally_signed() );
173 + }
174 + public static function signed_as_global(){
175 + return rest_sanitize_boolean( ( new static )->utils('options')->signed_as_global() );
176 + }
247 177 }