|
|
{% extends "base.html" %}
|
|
|
|
|
|
{% block title %}إنشاء حساب{% endblock %}
|
|
|
|
|
|
{% block content %}
|
|
|
<div class="auth-container">
|
|
|
<h2>إنشاء حساب جديد</h2>
|
|
|
<form id="registerForm" method="POST" action="{{ url_for('register') }}">
|
|
|
<div class="form-group">
|
|
|
<label for="username">اسم المستخدم</label>
|
|
|
<input type="text" id="username" name="username" required>
|
|
|
<small class="form-text">سيتم إضافة @moltka.eg تلقائياً</small>
|
|
|
<span id="username-validation-message"></span>
|
|
|
</div>
|
|
|
|
|
|
<div class="form-group">
|
|
|
<label for="password">كلمة المرور</label>
|
|
|
<input type="password" id="password" name="password" required>
|
|
|
<div id="password-strength" class="strength-meter"></div>
|
|
|
</div>
|
|
|
|
|
|
<div class="form-group">
|
|
|
<label for="confirm_password">تأكيد كلمة المرور</label>
|
|
|
<input type="password" id="confirm_password" name="confirm_password" required>
|
|
|
<span id="password-match-message"></span>
|
|
|
</div>
|
|
|
|
|
|
<div class="form-group">
|
|
|
<label for="profession">المجال المهني</label>
|
|
|
<select id="profession" name="profession" required>
|
|
|
<option value="">اختر المجال المهني</option>
|
|
|
<option value="مطور ويب">مطور ويب</option>
|
|
|
<option value="مطور واجهة خلفية">مطور واجهة خلفية</option>
|
|
|
<option value="برمجة">برمجة</option>
|
|
|
<option value="مطور ألعاب">مطور ألعاب</option>
|
|
|
<option value="مطور أندرويد">مطور أندرويد</option>
|
|
|
<option value="مطور iOS">مطور iOS</option>
|
|
|
<option value="مهندس">مهندس</option>
|
|
|
<option value="طبيب">طبيب</option>
|
|
|
<option value="علوم اجتماعية">علوم اجتماعية</option>
|
|
|
<option value="معلم">معلم</option>
|
|
|
<option value="محاسب">محاسب</option>
|
|
|
<option value="صحفي">صحفي</option>
|
|
|
<option value="محامي">محامي</option>
|
|
|
<option value="مصمم جرافيكي">مصمم جرافيكي</option>
|
|
|
<option value="مصور">مصور</option>
|
|
|
<option value="كاتب">كاتب</option>
|
|
|
<option value="مدرب رياضي">مدرب رياضي</option>
|
|
|
<option value="طاهي">طاهي</option>
|
|
|
<option value="ديني">ديني</option>
|
|
|
<option value="شاعر">شاعر</option>
|
|
|
<option value="رسام">رسام</option>
|
|
|
<option value="محلل مالي">محلل مالي</option>
|
|
|
<option value="فني صيانة">فني صيانة</option>
|
|
|
<option value="باحث">باحث</option>
|
|
|
<option value="IT">IT</option>
|
|
|
</select>
|
|
|
</div>
|
|
|
|
|
|
<div class="form-group">
|
|
|
<label>المهارات</label>
|
|
|
<div id="skills-container">
|
|
|
<div class="skill-input">
|
|
|
<input type="text" name="skill" class="skill-field">
|
|
|
<button type="button" class="add-skill">+</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<input type="hidden" id="skills" name="skills">
|
|
|
</div>
|
|
|
|
|
|
<div class="form-group">
|
|
|
<label for="security_question">سؤال الأمان</label>
|
|
|
<select id="security_question" name="security_question" required>
|
|
|
<option value="">اختر سؤال الأمان</option>
|
|
|
<option value="ما اسم مدرستك الأولى؟">ما اسم مدرستك الأولى؟</option>
|
|
|
<option value="ما اسم حيوانك الأليف الأول؟">ما اسم حيوانك الأليف الأول؟</option>
|
|
|
<option value="ما هي مدينتك المفضلة؟">ما هي مدينتك المفضلة؟</option>
|
|
|
<option value="ما اسم أفضل صديق في طفولتك؟">ما اسم أفضل صديق في طفولتك؟</option>
|
|
|
</select>
|
|
|
</div>
|
|
|
|
|
|
<div class="form-group">
|
|
|
<label for="security_answer">إجابة سؤال الأمان</label>
|
|
|
<input type="text" id="security_answer" name="security_answer" required>
|
|
|
</div>
|
|
|
|
|
|
<button type="submit" class="submit-btn">إنشاء الحساب</button>
|
|
|
</form>
|
|
|
<div class="auth-links">
|
|
|
<p>لديك حساب بالفعل؟ <a href="{{ url_for('login') }}">تسجيل الدخول</a></p>
|
|
|
</div>
|
|
|
</div>
|
|
|
{% endblock %}
|
|
|
|
|
|
{% block scripts %}
|
|
|
<script>
|
|
|
$(document).ready(function() {
|
|
|
|
|
|
$('#username').on('input', function() {
|
|
|
const username = $(this).val();
|
|
|
if (username) {
|
|
|
$.get('/validate-username', { username: username }, function(data) {
|
|
|
if (data.exists) {
|
|
|
$('#username-validation-message').text('اسم المستخدم مستخدم بالفعل').addClass('error').removeClass('success');
|
|
|
} else {
|
|
|
$('#username-validation-message').text('اسم المستخدم متاح').addClass('success').removeClass('error');
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
$('#confirm_password').on('input', function() {
|
|
|
const password = $('#password').val();
|
|
|
const confirmPassword = $(this).val();
|
|
|
|
|
|
if (password === confirmPassword) {
|
|
|
$('#password-match-message').text('كلمات المرور متطابقة').addClass('success').removeClass('error');
|
|
|
} else {
|
|
|
$('#password-match-message').text('كلمات المرور غير متطابقة').addClass('error').removeClass('success');
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
$('#password').on('input', function() {
|
|
|
const password = $(this).val();
|
|
|
let strength = 0;
|
|
|
|
|
|
if (password.length >= 8) strength++;
|
|
|
if (/[A-Z]/.test(password)) strength++;
|
|
|
if (/[a-z]/.test(password)) strength++;
|
|
|
if (/[0-9]/.test(password)) strength++;
|
|
|
if (/[^A-Za-z0-9]/.test(password)) strength++;
|
|
|
|
|
|
const strengthMeter = $('#password-strength');
|
|
|
strengthMeter.removeClass('weak medium strong');
|
|
|
|
|
|
if (strength <= 2) {
|
|
|
strengthMeter.text('ضعيف').addClass('weak');
|
|
|
} else if (strength <= 4) {
|
|
|
strengthMeter.text('متوسط').addClass('medium');
|
|
|
} else {
|
|
|
strengthMeter.text('قوي').addClass('strong');
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
$('.add-skill').click(function() {
|
|
|
const skillValue = $(this).siblings('.skill-field').val();
|
|
|
if (skillValue.trim() !== "") {
|
|
|
const skillInput = `
|
|
|
<div class="skill-input">
|
|
|
<input type="text" name="skill" class="skill-field" value="${skillValue}">
|
|
|
<button type="button" class="remove-skill">-</button>
|
|
|
</div>
|
|
|
`;
|
|
|
$('#skills-container').append(skillInput);
|
|
|
$(this).siblings('.skill-field').val("");
|
|
|
}
|
|
|
});
|
|
|
|
|
|
$(document).on('click', '.remove-skill', function() {
|
|
|
$(this).parent().remove();
|
|
|
});
|
|
|
|
|
|
|
|
|
$('#registerForm').on('submit', function(e) {
|
|
|
const skills = [];
|
|
|
$('.skill-field').each(function() {
|
|
|
const skill = $(this).val().trim();
|
|
|
if (skill) {
|
|
|
skills.push(skill);
|
|
|
}
|
|
|
});
|
|
|
$('#skills').val(JSON.stringify(skills));
|
|
|
|
|
|
const password = $('#password').val();
|
|
|
const confirmPassword = $('#confirm_password').val();
|
|
|
|
|
|
if (password !== confirmPassword) {
|
|
|
e.preventDefault();
|
|
|
alert('كلمات المرور غير متطابقة');
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
const username = $('#username').val().trim();
|
|
|
if (!username) {
|
|
|
e.preventDefault();
|
|
|
alert('الرجاء إدخال اسم المستخدم');
|
|
|
return;
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
</script>
|
|
|
{% endblock %}
|
|
|
|