PageSourceSearch

https://platform.aysar.sa/ar/company/dashboard/login

html aysar.sa collected 2026-10-02 01:08:29 UTC 13,691 bytes, 312 lines download raw bytes

1<!DOCTYPE html>
2<html lang="ar" direction="rtl" dir="rtl">
3<head>
4    <base href="">
5    <meta charset="utf-8">
6    <meta name="viewport" content="width=device-width, initial-scale=1">
7    <title>تسجيل دخول - منصة أيسَر لإدارة العقارات وتتبع مراحل الإنشاء</title>
8    <meta name="description" content="لا تشيل هم الشغل! خلِّي منصة أيسَر يساعدك في إدارة عقاراتك، ومساعدة عملائك على تتبع مراحل اكتمال المشروع">
9    <link rel="shortcut icon" href="https://platform.aysar.sa/file/_image17806205791091214852.png">
10    <link rel="preconnect" href="https://fonts.googleapis.com">
11    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12    <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Arabic:wght@300;400;500;600;700&display=swap" rel="stylesheet">
13    <link href="https://platform.aysar.sa/companyAssets/css/company-auth.css?v=1.0.3" rel="stylesheet">
14    </head>
15<body class="ays-auth-body">
16<div class="auth-wrap">
17    <div class="auth-panel">
18    <img class="auth-panel__bg" src="https://platform.aysar.sa/companyAssets/images/aysar-building.png" alt="" aria-hidden="true">
19    <div class="auth-panel__overlay" aria-hidden="true"></div>
20
21    <div class="panel-content">
22        <div class="panel-headline">
23                        التقنية العقارية
24            بمفهوم <span>أيسَر</span>
25                    </div>
26        <div class="panel-sub">
27            منصة متكاملة لإدارة العقارات والملاك وطلبات الصيانة من مكان واحد.
28        </div>
29        <div class="panel-stats">
30            <div class="pstat">
31                <div class="pstat-val">+<span>100</span></div>
32                <div class="pstat-lbl">عقار مُدار</div>
33            </div>
34            <div class="pstat">
35                <div class="pstat-val"><span>98</span>%</div>
36                <div class="pstat-lbl">رضا العملاء</div>
37            </div>
38            <div class="pstat">
39                <div class="pstat-val">+<span>20</span></div>
40                <div class="pstat-lbl">شركة موثوقة</div>
41            </div>
42        </div>
43    </div>
44
45    <div class="panel-footer">
46        © 2026 أيسَر. جميع الحقوق محفوظة.
47    </div>
48</div>
49
50    <div class="auth-form-wrap">
51        <div class="auth-box auth-page-enter">
52            <div class="form-logo">
53    <img alt="أيسَر" src="https://platform.aysar.sa/file/_image17806136201908787405.png">
54</div>
55                <div class="auth-title">أهلاً بك 👋</div>
56    <div class="auth-sub">سجّل دخولك للوصول إلى لوحة التحكم</div>
57
58    <div id="authFormAlert" class="auth-alert alert-error" role="alert" hidden >
59    <svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6"><circle cx="10" cy="10" r="8"/><path d="M10 6v5M10 14h.01"/></svg>
60    <span id="authFormAlertText"></span>
61</div>
62
63    <form class="ays-auth-form" method="POST" action="https://platform.aysar.sa/ar/company/dashboard/post/login">
64        <input type="hidden" name="_token" value="ay8mE7wc2uDUzIW7NA8lZAip0XsZ3jfKW5EzZYH0" autocomplete="off">
65        <div class="f-group">
66            <label class="f-label" for="loginEmail">البريد الإلكتروني</label>
67            <div class="f-input-wrap">
68                <input type="email" name="email" id="loginEmail" class="f-input has-icon has-icon-r "
69                    value="" placeholder="[email protected]" autocomplete="email" required>
70                <span class="f-icon-r">
71                    <svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6"><rect x="2" y="4" width="16" height="12" rx="2"/><path d="M2 7l8 5 8-5"/></svg>
72                </span>
73            </div>
74                    </div>
75
76        <div class="f-group">
77            <label class="f-label" for="loginPassword">كلمة المرور</label>
78            <div class="f-input-wrap">
79                <input type="password" name="password" id="loginPassword" class="f-input has-icon has-icon-r "
80                    placeholder="••••••••" autocomplete="current-password" required>
81                <button type="button" class="f-eye" onclick="aysAuthTogglePw('loginPassword', this)" aria-label="إظهار/إخفاء كلمة المرور">
82                    <svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M1 10s3.5-6 9-6 9 6 9 6-3.5 6-9 6-9-6-9-6z"/><circle cx="10" cy="10" r="2.5"/></svg>
83                </button>
84            </div>
85                    </div>
86
87        <div class="forgot-row">
88            <label class="f-check" style="margin-bottom:0">
89                <input type="checkbox" name="remember" id="remember" value="1" >
90                <span class="f-check-lbl">تذكّرني</span>
91            </label>
92            <a class="forgot-link" href="https://platform.aysar.sa/ar/company/dashboard/reset-password">هل نسيت كلمة المرور؟</a>
93        </div>
94
95        <button type="submit" class="btn-auth" id="loginButton">
96            <svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 10h14M10 4l6 6-6 6"/></svg>
97            <span class="indicator-label">تسجيل الدخول</span>
98            <span class="indicator-progress" style="display:none;">الرجاء الإنتظار...</span>
99        </button>
100    </form>
101
102    <div class="auth-switch">
103        ليس لديك حساب؟
104        <a href="https://platform.aysar.sa/ar/company/dashboard/register">إنشاء حساب جديد</a>
105    </div>
106            <div class="auth-meta">
107    <span>الإصدار 2.6</span>
108    <div class="auth-lang">
109        <button type="button" class="auth-lang__btn" id="authLangToggle" aria-expanded="false">
110            <img src="https://platform.aysar.sa/companyAssets/media/flags/saudi-arabia.svg" alt="">
111            <span>عربي</span>
112        </button>
113        <div class="auth-lang__menu" id="authLangMenu">
114            <a href="https://platform.aysar.sa/ar/company/dashboard/login">
115                <img src="https://platform.aysar.sa/companyAssets/media/flags/saudi-arabia.svg" alt="">
116                <span>عربي</span>
117            </a>
118            <a href="https://platform.aysar.sa/en/company/dashboard/login">
119                <img src="https://platform.aysar.sa/companyAssets/media/flags/united-states.svg" alt="">
120                <span>الإنجليزية</span>
121            </a>
122        </div>
123    </div>
124</div>
125        </div>
126    </div>
127</div>
128
129<script>var hostUrl = "https://platform.aysar.sa";</script>
vendor: 1 bytes, line 129
129
130<script src="https://platform.aysar.sa/companyAssets/plugins/global/plugins.bundle.js"></script>
vendor: 1 bytes, line 130
130
131<script src="https://platform.aysar.sa/companyAssets/js/scripts.bundle.js"></script>
vendor: 1 bytes, line 131
131
132<script>
133    
134    </script>
134
135
136<script>
137    (function () {
138        var btn = document.getElementById('authLangToggle');
139        var menu = document.getElementById('authLangMenu');
140        if (!btn || !menu) return;
141        btn.addEventListener('click', function (e) {
142            e.stopPropagation();
143            var open = menu.classList.toggle('is-open');
144            btn.setAttribute('aria-expanded', open ? 'true' : 'false');
145        });
146        document.addEventListener('click', function () {
147            menu.classList.remove('is-open');
148            btn.setAttribute('aria-expanded', 'false');
149        });
150    })();
151
152    window.aysAuthTogglePw = function (inputId, btn) {
153        var inp = document.getElementById(inputId);
154        if (!inp) return;
155        var shown = inp.type === 'text';
156        inp.type = shown ? 'password' : 'text';
157        btn.innerHTML = shown
158            ? '<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M1 10s3.5-6 9-6 9 6 9 6-3.5 6-9 6-9-6-9-6z"/><circle cx="10" cy="10" r="2.5"/></svg>'
159            : '<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M17.94 10A9.58 9.58 0 0 1 10 16c-4.97 0-9-4.48-9-6 0-.67.5-1.87 1.48-3.07M6.11 6.11A5 5 0 0 1 15.9 15.9M3 3l14 14"/></svg>';
160    };
161
162    window.aysAuthOtpNext = function (input) {
163        input.value = input.value.replace(/\D/g, '').slice(0, 1);
164        input.classList.toggle('filled', !!input.value);
165        if (input.value) {
166            var next = input.nextElementSibling;
167            if (next && next.classList.contains('otp-input')) {
168                next.focus();
169            }
170        }
171    };
172
173    window.aysAuthOtpPrev = function (input, e) {
174        if (e.key === 'Backspace' && !input.value) {
175            var prev = input.previousElementSibling;
176            if (prev && prev.classList.contains('otp-input')) {
177                prev.focus();
178            }
179        }
180    };
181
182    window.aysAuthCollectOtp = function (wrap) {
183        var values = [];
184        wrap.querySelectorAll('.otp-input').forEach(function (el) {
185            values.push(el.value || '');
186        });
187        return values.join('');
188    };
189
190    window.aysAuthShowAlert = function (msg) {
191        var alertEl = document.getElementById('authFormAlert');
192        var alertText = document.getElementById('authFormAlertText');
193        if (!alertEl || !alertText) {
194            return;
195        }
196        alertText.textContent = msg;
197        alertEl.hidden = false;
198        alertEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
199    };
200
201    window.aysAuthHideAlert = function () {
202        var alertEl = document.getElementById('authFormAlert');
203        if (alertEl) {
204            alertEl.hidden = true;
205        }
206    };
207
208    window.aysAuthExtractErrorMessage = function (body, fallback) {
209        if (!body || typeof body !== 'object') {
210            return fallback;
211        }
212        if (body.message) {
213            var raw = String(body.message);
214            if (/smtp|authenticate|mailer|transport/i.test(raw)) {
215                return "تعذّر إرسال البريد. يرجى المحاولة لاحقاً أو التواصل مع الدعم.";
216            }
217            return raw;
218        }
219        if (body.errors && typeof body.errors === 'object') {
220            var firstKey = Object.keys(body.errors)[0];
221            if (firstKey && body.errors[firstKey] && body.errors[firstKey][0]) {
222                return body.errors[firstKey][0];
223            }
224        }
225        if (body.errors_object && typeof body.errors_object === 'object') {
226            var errKey = Object.keys(body.errors_object)[0];
227            if (errKey && body.errors_object[errKey] && body.errors_object[errKey][0]) {
228                return body.errors_object[errKey][0];
229            }
230        }
231        return fallback;
232    };
233
234    window.aysAuthParseJsonResponse = function (response) {
235        return response.text().then(function (text) {
236            var body = null;
237            if (text) {
238                try {
239                    body = JSON.parse(text);
240                } catch (e) {
241                    body = { message: text };
242                }
243            }
244            return {
245                ok: response.ok,
246                status: response.status,
247                body: body,
248            };
249        });
250    };
251
252    document.addEventListener('DOMContentLoaded', function () {
253        var alertEl = document.getElementById('authFormAlert');
254        var alertText = document.getElementById('authFormAlertText');
255        if (alertEl && !alertEl.hidden && alertText && alertText.textContent.trim()) {
256            alertEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
257        }
258    });
259
260    window.aysAuthCheckStrength = function (inp) {
261        var wrap = document.getElementById('strength-wrap');
262        if (!wrap) return;
263        var v = inp.value;
264        wrap.style.display = v.length ? 'block' : 'none';
265        var score = 0;
266        if (v.length >= 8) score++;
267        if (/[A-Z]/.test(v)) score++;
268        if (/[0-9]/.test(v)) score++;
269        if (/[^A-Za-z0-9]/.test(v)) score++;
270        ['sb1', 'sb2', 'sb3', 'sb4'].forEach(function (id, i) {
271            var bar = document.getElementById(id);
272            if (!bar) return;
273            bar.className = 'sbar';
274            if (score > i) {
275                bar.classList.add(score <= 1 ? 'weak' : score <= 2 ? 'fair' : 'good');
276            }
277        });
278        var lbl = document.getElementById('strength-lbl');
279        if (lbl) {
280            lbl.textContent = score <= 1
281                ? 'ضعيفة'
282                : score <= 2
283                    ? 'متوسطة'
284                    : 'قوية';
285        }
286        ['hint-len', 'hint-upper', 'hint-num'].forEach(function (id) {
287            var el = document.getElementById(id);
288            if (!el) return;
289            var ok = false;
290            if (id === 'hint-len') ok = v.length >= 8;
291            if (id === 'hint-upper') ok = /[A-Z]/.test(v);
292            if (id === 'hint-num') ok = /[0-9]/.test(v);
293            el.classList.toggle('ok', ok);
294        });
295    };
296</script>
vendor: 1 bytes, line 296
296
297<script>
298    document.addEventListener('DOMContentLoaded', function () {
299        var form = document.querySelector('.ays-auth-form');
300        var button = document.getElementById('loginButton');
301        if (!form || !button) return;
302        var label = button.querySelector('.indicator-label');
303        var progress = button.querySelector('.indicator-progress');
304        form.addEventListener('submit', function () {
305            if (label) label.style.display = 'none';
306            if (progress) progress.style.display = 'inline';
307            button.disabled = true;
308        });
309    });
310</script>
310
311</body>
312</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.