PageSourceSearch

https://thingle.io/login

html thingle.io collected 2026-10-07 23:38:00 UTC 25,344 bytes, 503 lines download raw bytes

1
2<!DOCTYPE html>
3<html lang="en">
4	<!--begin::Head-->
5	<head><base href="../../../"/>
6		<meta charset="utf-8">
7        <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
9        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,user-scalable=0"/>
10        <meta name="description" content="Thingle - Usado. É o novo novo.">
11        <meta name="author" content="thingle">
12        <meta name="appleid-signin-client-id" content="io.thingle.login">
13        <meta name="appleid-signin-scope" content="[SCOPES]">
14        <meta name="appleid-signin-redirect-uri" content="https://thingle.io/admin/includes/applelogin.php">
15        <meta name="appleid-signin-state" content="[STATE]">
16        <meta name="appleid-signin-nonce" content="[NONCE]">
17        <meta name="appleid-signin-use-popup" content="false">
18        <title>thingle - Entrar</title>
19		 <!-- Favicons-->
20        <link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon">
21        <link rel="thingle-icon" type="image/x-icon" href="img/thingle-57x57.png">
22        <link rel="thingle-icon" type="image/x-icon" sizes="72x72" href="img/thingle-72x72.png">
23        <link rel="thingle-icon" type="image/x-icon" sizes="114x114" href="img/thingle-114x114.png">
24        <link rel="thingle-icon" type="image/x-icon" sizes="144x144" href="img/thingle-144x144.png">
25		<!--begin::Fonts(mandatory for all pages)-->
26		<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,400,500,600,700" />
27		<!--end::Fonts-->
28		<!--begin::Global Stylesheets Bundle(mandatory for all pages)-->
29        
30        <link href="css/style.css" rel="stylesheet">
31		<link href="assets/plugins/global/plugins.bundle.css" rel="stylesheet" type="text/css" />
32		<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
33        <link rel="stylesheet" href="about/heros/overview.built.css" type="text/css">
34
35		<!--end::Global Stylesheets Bundle-->
36	</head>
37
38	<!--end::Head-->
39	<!--begin::Body-->
40	<body id="kt_body" class="auth-bg bgi-size-cover bgi-attachment-fixed bgi-position-center bgi-no-repeat">
41		<!--begin::Theme mode setup on page load-->
42		
42<script>
43        var defaultThemeMode = "light"; var themeMode; if ( document.documentElement ) { if ( document.documentElement.hasAttribute("data-bs-theme-mode")) { themeMode = document.documentElement.getAttribute("data-bs-theme-mode"); } else { if ( localStorage.getItem("data-bs-theme") !== null ) { themeMode = localStorage.getItem("data-bs-theme"); } else { themeMode = defaultThemeMode; } } if (themeMode === "system") { themeMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; } document.documentElement.setAttribute("data-bs-theme", themeMode); }
44        </script>
44
45		<!--end::Theme mode setup on page load-->
46		<!--begin::Main-->
47		<!--begin::Root-->
48        <div id="preloader">
49		<div data-loader="circle-side">
50		</div>
51	</div>
52		<div class="d-flex flex-column flex-root">
53			<!--begin::Page bg image-->
54			
55			<!--end::Page bg image-->
56			<!--begin::Authentication - sign_in -->
57			<div class="d-flex flex-column flex-column-fluid flex-lg-row">
58				<!--begin::Aside-->
59				<div class="d-flex flex-center w-lg-50 pt-15 pt-lg-0 px-10">
60					<!--begin::Aside-->
61					<div class="d-flex flex-center flex-lg-start flex-column">
62						<!--begin::Logo-->
63						<a href="feed" class="mb-4">
64							<img alt="Logo" src="img/thingle-b.png" class="h-45px" />
65						</a>
66						<!--end::Logo-->
67						<!--begin::Title-->
68						<div class="title m-0 d-none d-sm-block" style="font-size:36px">
69                        Usado. É o novo <em class="underlined-text">novo.<svg data-draw-path="" class="underline-illustration animate" viewBox="0 0 305 15" preserveAspectRatio="none">         <g>             <clipPath id="underline-clip-path">                 <path d="M146.18,1c8.46,0,16.91,0,25.37,0,4.91,0,9.78.09,14.69.37,5.44.3,11,.13,16.5.16,3.73,0,7.44.15,11.16.34,5.07.25,10.21.18,15.32.23,3.53,0,7,.19,10.56.31,6.05.22,12.12.48,18.22.31a42.08,42.08,0,0,1,5.28.1c3.7.37,7.43.32,11.16.35,3.93,0,7.85,0,11.74.4,1.7.18,3.53.07,5.29.13s3.53.11,5.27.23c4.32.3,6.39,1.62,7.14,3.5.67,1.66-1.61,3.44-5.11,3.8a49.34,49.34,0,0,1-8.73.29c-3.66-.27-7.45-.19-11.18-.23-3.93-.05-7.83-.11-11.75-.36-4.07-.25-8.24-.17-12.36-.2-3.74,0-7.46,0-11.16-.37-1.52-.15-3.13-.1-4.7-.13-8-.13-16.11.14-24.13-.48-2.3-.18-4.71-.07-7.06-.1-7-.1-14.1-.09-21.14-.45-3.3-.17-6.68-.08-10-.08q-33,0-66.07,0c-3.93,0-7.85.18-11.78.23q-15.3.18-30.6.32a100.14,100.14,0,0,0-10.56.38,16.47,16.47,0,0,1-2.34.1c-7.3-.18-14.49.48-21.74.63-3.52.07-7,.36-10.5.64a15.69,15.69,0,0,0-3.13.71c-1.17.34-2.27.72-3.35,1.11a16.45,16.45,0,0,1-6.72.68C4.61,13.59.63,11.26,1,8.89c.13-.76.81-1.38,1.8-2,3.25-2,7.91-2.71,12.81-3s9.78-.51,14.6-.85c7.61-.53,15.34-.13,22.89-.88C55,2,57.05,2.08,59,2.06c4.91,0,9.83.06,14.69-.41,1.33-.12,2.75-.07,4.12-.08,6.29,0,12.59,0,18.88-.08,4.51,0,9,.08,13.51-.38C111.72,1,113.34,1,114.92,1h31.26Z"></path>             </clipPath>             <path class="underline-path" pathLength="1" d="M6.57,8.17c107.81-3.26,287-.74,291.81-.74"></path>         </g>     </svg> </em>
70                        </div>
71                        </div>
72					<!--begin::Aside-->
73				</div>
74				<!--begin::Aside-->
75				<!--begin::Body-->
76				<div class="d-flex flex-column-fluid flex-lg-row-auto justify-content-center justify-content-lg-end p-5 p-lg-20">
77					<!--begin::Card-->
78					<div class="bg-body d-flex flex-column align-items-stretch flex-center rounded-4 w-md-600px p-10 p-md-20">
79						<!--begin::Wrapper-->
80						<div class="d-flex flex-center flex-column flex-column-fluid px-lg-10 pb-15 pb-lg-20">
81							<!--begin::Form-->
82                            <div class="form w-300px" id="form-login">
83				            
84                                
85                                    <!--begin::Heading-->
86                                    <div class="text-center mb-11">
87                                        <!--begin::Title-->
88                                        <h1 class="text-dark fw-bolder mb-3">Iniciar sessão</h1>
89                                        <!--end::Title-->
90                                        <!--begin::Title-->
91                                         
92                                        <!--end::Title-->
93                                        
94                                    </div>
95                                    <!--begin::Heading-->
96                                    <!--begin::Login options-->
97                                    <div class="row g-3 mb-9">
98                                    <!--begin::Col-->
99                                        <div class="col-md-12">
100                                            <!--begin::Google link=-->
101                                            <a id="apple-login-btn" class="btn btn-flex btn-dark bg-state-light flex-center text-nowrap w-100" style="height: 40px;">
102    <img alt="Logo" src="/assets/media/svg/brand-logos/apple-black-dark.svg" class="theme-light-show h-20px me-3">
103    <img alt="Logo" src="/assets/media/svg/brand-logos/apple-black-dark.svg" class="theme-dark-show h-20px me-3">     
104    Iniciar sessão com a Apple</a>
105
106                                                                                </div>
107                                        <!--end::Col-->
108                                        <!--begin::Col-->
109                                        <div class="col-md-12">
110                                            <!--begin::Google link=-->
111
112                                            
113                                            
114                                            <div id="g_id_onload"
115     data-client_id="976850577819-mg79dn3v41fgt1op6q02ebb7d2ao1av3.apps.googleusercontent.com"
116     data-context="signin"
117     data-ux_mode="redirect"
118     data-login_uri="https://thingle.io/admin/includes/glogin.php"
119     data-itp_support="true">
120
121
122</div>
123
124                                            <div class="g_id_signin "
125                                                data-type="standard"
126                                                data-shape="rectangular"
127                                                data-theme="outline"
128                                                data-text="signin_with"
129                                                data-size="large"
130                                                data-logo_alignment="center"
131                                                data-width="290">
132                                            </div>
133                                            
134                                           
135                                            
136                                            <!--end::Google link=-->
137                                        </div>
138                                        
139                                        
140                                    </div>
141							        <!--end::Login options-->
142                                    <!--begin::Separator-->
143                                    <div class="separator separator-content my-14">
144                                        <span class="w-200px text-gray-500 fw-semibold fs-7">ou com Thingle ID</span>
145                                    </div>
146                                    <!--end::Separator-->
147                                    <form class="form w-100" novalidate="novalidate" id="kt_sign_in_form"  data-kt-redirect-url="feed">
148                                    <!--begin::Input group=-->
149                                    <div class="fv-row mb-4 mb-md-8">
150                                        <!--begin::Email-->
151                                        
152                                        <input id="email1" type="text" name="username" placeholder="E-mail" class="form-control form-control-solid fs-4" name="email" value=""/>
153                                        
154							            
155                                       
156                                        
157                                        <!--end::Email-->
158                                    </div>
159                                    <!--end::Input group=-->
160                                    <div class="fv-row mb-3">
161                                        <!--begin::Password-->
162                                        
163                                        <input id="password1" type="password" class="form-control form-control-solid fs-4" name="password" placeholder="Palavra passe"  value=""/>
164                                        
165                                        <!--end::Password-->
166                                    </div>
167
168                                    <!--begin::Wrapper-->
169                                    <div class="d-flex flex-stack flex-wrap gap-3 fs-base fw-semibold mb-4 mb-md-8">
170                                        <div></div>
171                                        <!--begin::Link-->
172                                        <a href="recover" id="link-reset" class="link-primary">Recuperar palavra passe?</a>
173                                        <!--end::Link-->
174                                    </div>
175                                    <!--end::Wrapper-->
176                                    <!--begin::Submit button-->
177                                    <div class="d-grid mb-10">
178                                        <input type="hidden" name="form_submission" value="login">
179                                        <button type="submit" id="kt_sign_in_submit" class="btn btn-light-primary">
180                                            <!--begin::Indicator label-->
181                                            <span class="indicator-label">Iniciar sessão</span>
182                                            <!--end::Indicator label-->
183                                            <!--begin::Indicator progress-->
184                                            <span class="indicator-progress">Aguardar...
185                                            <span class="spinner-border spinner-border-sm align-middle ms-2"></span></span>
186                                            <!--end::Indicator progress-->
187                                        </button>
188                                    </div>
189                                    <!--end::Submit button-->
190                                    <!--begin::Sign up-->
191                                   
192                                    <div class="text-gray-500 text-center fw-semibold fs-6">Novo na thingle?                                    <a href="sign-up" class="link-primary">Registar!</a></div>
193                                    <!--end::Sign up-->
194                                </form>
195                                <!--end::Form-->
196                            </div>
197                            
198						</div>
199						<!--end::Wrapper-->
200
201
202                        
203
204						<!--begin::Footer-->
205						<div class="d-flex  flex-center text-center">
206							
207							<!--begin::Links-->
208							<div class="d-flex fw-semibold text-primary fs-base gap-5">
209								<a href="support-center/termsandconditions" target="_blank">Termos e condições</a>
210								<a href="support-center/privacyandcookies" target="_blank">Privacidade & Cookies</a>
211								<a ><span> thingle.io © 2026</span></a>
212							</div>
213							<!--end::Links-->
214						</div>
215						<!--end::Footer-->
216					</div>
217					<!--end::Card-->
218				</div>
219				<!--end::Body-->
220			</div>
221			<!--end::Authentication - sign_in-->
222		</div>
223		<!--end::Root-->
224		<!--end::Main-->
225		<!--begin::Javascript-->
226		
226<script>var hostUrl = "assets/";</script>
226
227		<!--begin::Global Javascript Bundle(mandatory for all pages)-->
228		
228<script src="assets/plugins/global/plugins.bundle.js"></script>
228
229		
229<script src="assets/js/scripts.bundle.js"></script>
229
230        
230<script type="text/javascript" src="https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js"></script>
230
231        
231<script src="https://apis.google.com/js/platform.js" async defer></script>
231
232        
232<script src="https://accounts.google.com/gsi/client" async></script>
232
233		<!--end::Global Javascript Bundle-->
234		<!--begin::Custom Javascript(used for this page only)-->
235		
235<script>
236        "use strict";
237
238        // Class definition
239        var KTSigninGeneral = function() {
240            // Elements
241            var form;
242            var submitButton;
243            var validator;
244
245            // Handle form
246            var handleValidation = function(e) {
247                // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/
248                validator = FormValidation.formValidation(
249                    form,
250                    {
251                        fields: {					
252                            'username': {
253                                validators: {
254                                    regexp: {
255                                        regexp: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
256                                        message: 'O valor não é um endereço de e-mail válido',
257                                    },
258                                    notEmpty: {
259                                        message: 'É necessário endereço de e-mail'
260                                    }
261                                }
262                            },
263                            'password': {
264                                validators: {
265                                    notEmpty: {
266                                        message: 'É necessário palavra passe'
267                                    }
268                                }
269                            } 
270                        },
271                        plugins: {
272                            trigger: new FormValidation.plugins.Trigger(),
273                            bootstrap: new FormValidation.plugins.Bootstrap5({
274                                rowSelector: '.fv-row',
275                                eleInvalidClass: '',  // comment to enable invalid state icons
276                                eleValidClass: '' // comment to enable valid state icons
277                            })
278                        }
279                    }
280                );	
281            }
282
283            
284
285            var handleSubmitAjax = function(e) {
286                // Handle form submit
287                submitButton.addEventListener('click', function (e) {
288                    // Prevent button default action
289                    e.preventDefault();
290                    handleValidation();
291                    // Validate form
292                    validator.validate().then(function (status) {
293                        if (status == 'Valid') {
294
295                             // Show loading indication
296                            submitButton.setAttribute('data-kt-indicator', 'on');
297
298                            // Disable button to avoid multiple click 
299                            submitButton.disabled = true;
300
301
302                            
303
304                            $.ajax
305								({
306                                    type:'post',
307                                    url:'admin/includes/process.php',
308                                    dataType: 'json',
309                                    data:{
310                                        username: form.querySelector('[name="username"]').value, 
311                                        password: form.querySelector('[name="password"]').value,
312                                        form_submission: "login",
313
314                                        },
315                                    success:function(response) 
316                                        {
317                                            if (response.loginStatus == 1) {
318                                                form.querySelector('[name="username"]').value= "";
319                                                form.querySelector('[name="password"]').value= "";  
320
321                                                const redirectUrl = form.getAttribute('data-kt-redirect-url');
322                                            
323                                                if (redirectUrl) {
324                                                    location.href = redirectUrl;
325                                                }
326                                            } else {
327                                                // Hide loading indication
328                                                submitButton.removeAttribute('data-kt-indicator');
329
330                                                // Enable button
331                                                submitButton.disabled = false;
332                                                // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/
333                                                Swal.fire({
334                                                    text: "Parece que alguns erros foram detectados, tenta novamente.",
335                                                    icon: "error",
336                                                    buttonsStyling: false,
337                                                    confirmButtonText: "Ok",
338                                                    customClass: {
339                                                        confirmButton: "btn btn-primary"
340                                                    }
341                                                });
342                                            }
343                                            
344
345                                        }
346								});
347                                                
348                            
349                        } else {
350                            // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/
351                            Swal.fire({
352                                text: "Parece que alguns erros foram detectados, tenta novamente.",
353                                icon: "error",
354                                buttonsStyling: false,
355                                confirmButtonText: "Ok",
356                                customClass: {
357                                    confirmButton: "btn btn-primary"
358                                }
359                            });
360                        }
361                    });
362                });
363            }
364
365            
366            
367
368
369
370            // Call the function to initialize Google Sign-In
371            
372
373            // Public functions
374            return {
375                // Initialization
376                init: function() {
377                    form = document.querySelector('#kt_sign_in_form');
378                    submitButton = document.querySelector('#kt_sign_in_submit');
379                    
380                    handleSubmitAjax(); // use for ajax submit
381                    		$('[data-loader="circle-side"]').fadeOut(); // will first fade out the loading animation
382		$('#preloader').delay(350).fadeOut('slow'); // will fade out the white DIV that covers the website.
383                }
384            };
385        }();
386
387        // On document ready
388        KTUtil.onDOMContentLoaded(function() {
389            KTSigninGeneral.init();
390        });
391
392        $("#google-login-button").click(function() {
393        $('.g_id_signin div[role=button]').click();
394        var button = document.querySelector("#google-login-button"); 
395                        // Activate indicator
396                        button.setAttribute("data-kt-indicator", "on");
397                        
398    });
399
400        function handleCredentialResponse(response) {
401            
402            $.ajax
403                ({
404                    type:'post',
405                    url:'admin/includes/glogin.php',
406                    dataType: 'json',
407                    data:{
408                        credential: response.credential,
409
410                        },
411                    success:function(response) 
412                        {
413                            if (response.loginStatus == 1) {
414                                
415                                
416                                location.href = "feed";
417                                
418                            }else if (response.loginStatus == 2) {
419                                
420                                // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/
421                                Swal.fire({
422                                    text: response.message,
423                                    icon: "success",
424                                    buttonsStyling: false,
425                                    confirmButtonText: "Ok",
426                                    customClass: {
427                                        confirmButton: "btn btn-primary"
428                                    }
429                                });
430                                location.href = "welcome";
431                                
432                            } else {
433                                
434                                // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/
435                                Swal.fire({
436                                    text: response.message,
437                                    icon: "warning",
438                                    buttonsStyling: false,
439                                    confirmButtonText: "Ok",
440                                    customClass: {
441                                        confirmButton: "btn btn-primary"
442                                    }
443                                });
444                                var button = document.querySelector("#google-login-button"); 
445                                button.removeAttribute("data-kt-indicator");
446                            }
447                            
448
449                        }
450                });
451    
452  }
453
454
455     
456        </script>
456
457        
457<script type="text/javascript">
458    document.getElementById('apple-login-btn').addEventListener('click', function() {
459        // Initialize Apple authentication
460        AppleID.auth.init({
461            clientId : 'io.thingle.login',
462            scope : 'name email',
463            redirectURI: 'https://thingle.io/admin/includes/applelogin.php',
464            state : '4a5050c44c',
465            nonce : 'nonce_value'
466        });
467
468        // Trigger Apple sign-in window
469        AppleID.auth.signIn({
470            success: function(authorization) {
471                // Handle successful sign-in
472                console.log(authorization);
473                // Optionally, you can redirect or perform other actions here
474            },
475            failure: function(error) {
476                // Handle error
477                console.error(error);
478            }
479        });
480    });
481</script>
481
482
483		<!--end::Custom Javascript-->
484		<!--end::Javascript-->
485        <style>
486        .g_id_signin {
487   // display: none;
488   
489}
490        </style>
491        
492	</body>
493	<!--end::Body-->
494<style>
495@media screen and (max-width: 767px) {
496    body {
497        background-color: #fff; /* Set the background color to white */
498    }
499    
500}
501
502</style>
503</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.