Update: 2026-06-28 00:42:25

This commit is contained in:
Hamza-Ayed
2026-06-28 00:42:26 +03:00
parent f428946b30
commit f9f6890b26
10 changed files with 666 additions and 345 deletions

View File

@@ -1,159 +0,0 @@
<?php
// ============================================================
// create_tester_driver.php
// إنشاء أو تحديث مستخدم فاحص (Tester) خاص بمراجعي المتاجر
// ============================================================
require_once __DIR__ . '/../../core/bootstrap.php';
// يمكن استقبال المتغيرات عبر الـ POST/GET أو استخدام قيم افتراضية آمنة
$email = filterRequest('email') ?? 'review_tester@siromove.com';
$password = filterRequest('password') ?? 'SiroTester2026!';
$phone = filterRequest('phone') ?? '962790000000';
$firstName = filterRequest('first_name') ?? 'فاحص';
$lastName = filterRequest('last_name') ?? 'المتجر';
$gender = 'Male';
$birthdate = '1995-01-01';
$site = 'Jordan';
$status = 'actives'; // تفعيل مباشر
if (empty($email) || empty($password) || empty($phone)) {
jsonError("Missing required parameters: email, password, phone");
}
try {
$con = Database::get('main');
$con->beginTransaction();
// 1. تشفير البيانات الحساسة للحفاظ على خصوصيتها وتطابق الهيكل
$encryptedEmail = $encryptionHelper->encryptData($email);
$encryptedPhone = $encryptionHelper->encryptData($phone);
$encryptedFirstName = $encryptionHelper->encryptData($firstName);
$encryptedLastName = $encryptionHelper->encryptData($lastName);
$encryptedGender = $encryptionHelper->encryptData($gender);
$encryptedBirthdate = $encryptionHelper->encryptData($birthdate);
$encryptedSite = $encryptionHelper->encryptData($site);
// تشفير كلمة المرور باستخدام BCRYPT
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);
// 2. التحقق من وجود المستخدم مسبقاً
$stmtCheck = $con->prepare("SELECT id FROM driver WHERE email = :email LIMIT 1");
$stmtCheck->execute([':email' => $encryptedEmail]);
$existingDriver = $stmtCheck->fetch(PDO::FETCH_ASSOC);
if ($existingDriver) {
$driverId = $existingDriver['id'];
// تحديث الحساب الحالي
$sqlDriver = "UPDATE `driver` SET
`phone` = :phone,
`password` = :password,
`gender` = :gender,
`birthdate` = :birthdate,
`site` = :site,
`first_name` = :first_name,
`last_name` = :last_name,
`status` = :status
WHERE `id` = :driverId";
$stmtDriver = $con->prepare($sqlDriver);
$stmtDriver->execute([
':phone' => $encryptedPhone,
':password' => $hashedPassword,
':gender' => $encryptedGender,
':birthdate' => $encryptedBirthdate,
':site' => $encryptedSite,
':first_name' => $encryptedFirstName,
':last_name' => $encryptedLastName,
':status' => $status,
':driverId' => $driverId
]);
$action = "updated";
} else {
// توليد معرّف فريد جديد
$driverId = bin2hex(random_bytes(8)); // 16-char hex ID
// إدراج حساب سائق جديد
$sqlDriver = "INSERT INTO `driver`
(id, phone, email, password, gender, birthdate, site, first_name, last_name, status, bankCode, accountBank)
VALUES
(:driverId, :phone, :email, :password, :gender, :birthdate, :site, :first_name, :last_name, :status, 'CIB', 'yet')";
$stmtDriver = $con->prepare($sqlDriver);
$stmtDriver->execute([
':driverId' => $driverId,
':phone' => $encryptedPhone,
':email' => $encryptedEmail,
':password' => $hashedPassword,
':gender' => $encryptedGender,
':birthdate' => $encryptedBirthdate,
':site' => $encryptedSite,
':first_name' => $encryptedFirstName,
':last_name' => $encryptedLastName,
':status' => $status
]);
$action = "created";
}
// 3. التحقق وتفعيل رقم الهاتف في جدول phone_verification
$stmtPVCheck = $con->prepare("SELECT id FROM phone_verification WHERE phone_number = :phone LIMIT 1");
$stmtPVCheck->execute([':phone' => $phone]);
$pvRecord = $stmtPVCheck->fetch(PDO::FETCH_ASSOC);
if ($pvRecord) {
$stmtPV = $con->prepare("UPDATE phone_verification SET is_verified = 1, driverId = :driverId WHERE phone_number = :phone");
$stmtPV->execute([':driverId' => $driverId, ':phone' => $phone]);
} else {
$stmtPV = $con->prepare("INSERT INTO phone_verification (phone_number, driverId, email, is_verified) VALUES (:phone, :driverId, :email, 1)");
$stmtPV->execute([':phone' => $phone, ':driverId' => $driverId, ':email' => $email]);
}
// 4. إضافة أو تحديث سيارة مرافقة لتجاوز فحص الكابتن بدون سيارة
$stmtCarCheck = $con->prepare("SELECT id FROM CarRegistration WHERE driverID = :driverId LIMIT 1");
$stmtCarCheck->execute([':driverId' => $driverId]);
$carRecord = $stmtCarCheck->fetch(PDO::FETCH_ASSOC);
if ($carRecord) {
$sqlCar = "UPDATE CarRegistration SET
make = 'تويوتا',
model = 'راف',
year = 2019,
color = 'أبيض',
owner = 'Siro LLC',
expiration_date = '2030-01-01',
status = 'actives'
WHERE driverID = :driverId";
$stmtCar = $con->prepare($sqlCar);
$stmtCar->execute([':driverId' => $driverId]);
} else {
$sqlCar = "INSERT INTO CarRegistration
(driverID, vin, car_plate, make, model, year, expiration_date, color, owner, color_hex, fuel, isDefault, status)
VALUES
(:driverId, 'TESTER_VIN', 'TEST-PLATE', 'تويوتا', 'راف', 2019, '2030-01-01', 'أبيض', 'Siro LLC', '#FFFFFF', 'Petrol', 1, 'actives')";
$stmtCar = $con->prepare($sqlCar);
$stmtCar->execute([':driverId' => $driverId]);
}
$con->commit();
echo json_encode([
"status" => "success",
"message" => "Tester driver successfully $action.",
"details" => [
"driver_id" => $driverId,
"email" => $email,
"password" => $password,
"phone" => $phone,
"status" => $status
]
], JSON_UNESCAPED_UNICODE);
} catch (Exception $e) {
if (isset($con)) {
$con->rollBack();
}
error_log("[Create Tester Driver Error] " . $e->getMessage());
jsonError("Server error: " . $e->getMessage());
}
?>

View File

@@ -1,137 +0,0 @@
<?php
// ============================================================
// create_tester_passenger.php
// إنشاء أو تحديث مستخدم فاحص (Tester) خاص بمراجعي المتاجر (تطبيق الركاب)
// ============================================================
require_once __DIR__ . '/../core/bootstrap.php';
// استقبال المتغيرات أو استخدام قيم افتراضية آمنة
$email = filterRequest('email') ?? 'passenger_tester@siromove.com';
$password = filterRequest('password') ?? 'SiroPassenger2026!';
$phone = filterRequest('phone') ?? '962790000001';
$firstName = filterRequest('first_name') ?? 'راكب';
$lastName = filterRequest('last_name') ?? 'المتجر';
$gender = 'Male';
$birthdate = '1998-01-01';
$site = 'Jordan';
if (empty($email) || empty($password) || empty($phone)) {
jsonError("Missing required parameters: email, password, phone");
}
try {
$con = Database::get('main');
$con->beginTransaction();
// 1. تشفير البيانات الحساسة للحفاظ على خصوصيتها وتطابق الهيكل
$encryptedEmail = $encryptionHelper->encryptData($email);
$encryptedPhone = $encryptionHelper->encryptData($phone);
$encryptedFirstName = $encryptionHelper->encryptData($firstName);
$encryptedLastName = $encryptionHelper->encryptData($lastName);
$encryptedGender = $encryptionHelper->encryptData($gender);
$encryptedBirthdate = $encryptionHelper->encryptData($birthdate);
$encryptedSite = $encryptionHelper->encryptData($site);
// تشفير الحقول الافتراضية
$encryptedSos = $encryptionHelper->encryptData('sos');
$encryptedEducation = $encryptionHelper->encryptData('none');
$encryptedEmployment = $encryptionHelper->encryptData('none');
$encryptedMarital = $encryptionHelper->encryptData('none');
// 2. التحقق من وجود الراكب مسبقاً
$stmtCheck = $con->prepare("SELECT id FROM passengers WHERE email = :email LIMIT 1");
$stmtCheck->execute([':email' => $encryptedEmail]);
$existingPassenger = $stmtCheck->fetch(PDO::FETCH_ASSOC);
if ($existingPassenger) {
$passengerId = $existingPassenger['id'];
// تحديث حساب الراكب الحالي
$sqlPassenger = "UPDATE `passengers` SET
`phone` = :phone,
`password` = :password,
`gender` = :gender,
`birthdate` = :birthdate,
`site` = :site,
`first_name` = :first_name,
`last_name` = :last_name,
`status` = 'actives'
WHERE `id` = :passengerId";
$stmtPassenger = $con->prepare($sqlPassenger);
$stmtPassenger->execute([
':phone' => $encryptedPhone,
':password' => $password, // خزن كـ plaintext متوافقاً مع الاستعلام القديم
':gender' => $encryptedGender,
':birthdate' => $encryptedBirthdate,
':site' => $encryptedSite,
':first_name' => $encryptedFirstName,
':last_name' => $encryptedLastName,
':passengerId' => $passengerId
]);
$action = "updated";
} else {
// توليد معرّف فريد جديد للراكب
$passengerId = bin2hex(random_bytes(8)); // 16-char hex ID
// إدراج حساب راكب جديد
$sqlPassenger = "INSERT INTO `passengers`
(id, phone, email, password, gender, status, birthdate, site, first_name, last_name, sosPhone, education, employmentType, maritalStatus)
VALUES
(:passengerId, :phone, :email, :password, :gender, 'actives', :birthdate, :site, :first_name, :last_name, :sos, :edu, :emp, :marital)";
$stmtPassenger = $con->prepare($sqlPassenger);
$stmtPassenger->execute([
':passengerId' => $passengerId,
':phone' => $encryptedPhone,
':email' => $encryptedEmail,
':password' => $password, // خزن كـ plaintext متوافقاً مع الاستعلام القديم
':gender' => $encryptedGender,
':birthdate' => $encryptedBirthdate,
':site' => $encryptedSite,
':first_name' => $encryptedFirstName,
':last_name' => $encryptedLastName,
':sos' => $encryptedSos,
':edu' => $encryptedEducation,
':emp' => $encryptedEmployment,
':marital' => $encryptedMarital
]);
$action = "created";
}
// 3. التحقق وتفعيل رقم الهاتف في جدول phone_verification_passenger
$stmtPVCheck = $con->prepare("SELECT id FROM phone_verification_passenger WHERE phone_number = :phone LIMIT 1");
$stmtPVCheck->execute([':phone' => $phone]);
$pvRecord = $stmtPVCheck->fetch(PDO::FETCH_ASSOC);
if ($pvRecord) {
$stmtPV = $con->prepare("UPDATE phone_verification_passenger SET verified = 1, status = 'actives' WHERE phone_number = :phone");
$stmtPV->execute([':phone' => $phone]);
} else {
$stmtPV = $con->prepare("INSERT INTO phone_verification_passenger (phone_number, verified, status) VALUES (:phone, 1, 'actives')");
$stmtPV->execute([':phone' => $phone]);
}
$con->commit();
echo json_encode([
"status" => "success",
"message" => "Tester passenger successfully $action.",
"details" => [
"passenger_id" => $passengerId,
"email" => $email,
"password" => $password,
"phone" => $phone,
"status" => "actives"
]
], JSON_UNESCAPED_UNICODE);
} catch (Exception $e) {
if (isset($con)) {
$con->rollBack();
}
error_log("[Create Tester Passenger Error] " . $e->getMessage());
jsonError("Server error: " . $e->getMessage());
}
?>

511
backend/index.html Normal file
View File

@@ -0,0 +1,511 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Siro - Safe & Affordable Ride Sharing</title>
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<style>
:root {
--primary: #2563EB;
--primary-glow: rgba(37, 99, 235, 0.4);
--primary-gradient: linear-gradient(135deg, #2563EB 0%, #1D4ED8 100%);
--secondary-gradient: linear-gradient(135deg, rgba(255,255,255,0.08) 0%, rgba(255,255,255,0.02) 100%);
--bg: #09090E;
--card-bg: rgba(255, 255, 255, 0.03);
--text-main: #FFFFFF;
--text-muted: #94A3B8;
--border: rgba(255, 255, 255, 0.08);
--accent: #10B981;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: 'Outfit', sans-serif;
background-color: var(--bg);
color: var(--text-main);
line-height: 1.6;
overflow-x: hidden;
background-image:
radial-gradient(circle at 10% 20%, rgba(37, 99, 235, 0.15) 0%, transparent 45%),
radial-gradient(circle at 90% 80%, rgba(16, 185, 129, 0.08) 0%, transparent 45%);
background-attachment: fixed;
}
/* --- Header / Navigation --- */
header {
width: 100%;
padding: 24px 8%;
display: flex;
justify-content: space-between;
align-items: center;
position: absolute;
top: 0;
left: 0;
z-index: 100;
}
.logo-container {
display: flex;
align-items: center;
gap: 12px;
}
.logo-img {
width: 44px;
height: 44px;
border-radius: 50%;
border: 1px solid var(--border);
background: #FFFFFF;
padding: 2px;
}
.logo-text {
font-size: 24px;
font-weight: 800;
letter-spacing: -0.5px;
background: linear-gradient(to right, #FFFFFF, #E2E8F0);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
nav a {
color: var(--text-muted);
text-decoration: none;
font-weight: 500;
font-size: 15px;
transition: color 0.2s ease;
margin-left: 24px;
}
nav a:hover {
color: #FFFFFF;
}
/* --- Hero Section --- */
.hero {
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
padding: 120px 20px 80px 20px;
position: relative;
}
.hero::before {
content: '';
position: absolute;
top: 30%;
left: 50%;
transform: translate(-50%, -50%);
width: 400px;
height: 400px;
background: rgba(37, 99, 235, 0.2);
border-radius: 50%;
filter: blur(120px);
z-index: -1;
pointer-events: none;
}
.badge {
background: rgba(37, 99, 235, 0.1);
color: #3B82F6;
border: 1px solid rgba(37, 99, 235, 0.2);
padding: 8px 16px;
border-radius: 100px;
font-size: 13px;
font-weight: 600;
letter-spacing: 0.5px;
margin-bottom: 24px;
text-transform: uppercase;
}
h1 {
font-size: clamp(40px, 6vw, 68px);
font-weight: 800;
line-height: 1.15;
margin-bottom: 20px;
letter-spacing: -1.5px;
background: linear-gradient(to right, #FFFFFF, #E2E8F0, #94A3B8);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
max-width: 900px;
}
.subtitle {
font-size: clamp(16px, 2.5vw, 19px);
color: var(--text-muted);
max-width: 620px;
margin-bottom: 40px;
font-weight: 400;
}
.cta-container {
display: flex;
gap: 16px;
flex-wrap: wrap;
justify-content: center;
margin-bottom: 60px;
}
.btn {
display: inline-flex;
align-items: center;
gap: 10px;
padding: 15px 32px;
border-radius: 14px;
font-weight: 600;
text-decoration: none;
transition: all 0.2s ease;
font-size: 15px;
}
.btn-primary {
background: var(--primary-gradient);
color: #FFFFFF;
box-shadow: 0 4px 20px var(--primary-glow);
}
.btn-primary:hover {
opacity: 0.95;
transform: translateY(-2px);
box-shadow: 0 6px 24px var(--primary-glow);
}
.btn-secondary {
background: var(--secondary-gradient);
color: #FFFFFF;
border: 1px solid var(--border);
}
.btn-secondary:hover {
background: rgba(255,255,255,0.06);
transform: translateY(-2px);
border-color: rgba(255,255,255,0.15);
}
/* --- Mockup Section --- */
.mockup-wrapper {
width: 100%;
max-width: 780px;
border-radius: 24px;
border: 1px solid var(--border);
background: rgba(255, 255, 255, 0.01);
backdrop-filter: blur(10px);
padding: 16px;
box-shadow: 0 30px 60px rgba(0, 0, 0, 0.6);
margin: 0 auto;
}
.mockup-inner {
border-radius: 18px;
overflow: hidden;
border: 1px solid var(--border);
aspect-ratio: 16/9;
background: #000000;
display: flex;
justify-content: center;
align-items: center;
position: relative;
}
.mockup-inner img {
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0.75;
}
.play-indicator {
position: absolute;
width: 72px;
height: 72px;
border-radius: 50%;
background: var(--primary-gradient);
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 8px 24px var(--primary-glow);
border: 1px solid rgba(255, 255, 255, 0.2);
}
/* --- Features Section --- */
.features-section {
padding: 100px 8%;
position: relative;
}
.section-header {
text-align: center;
margin-bottom: 60px;
}
.section-header h2 {
font-size: 38px;
font-weight: 800;
letter-spacing: -1px;
margin-bottom: 12px;
}
.section-header p {
color: var(--text-muted);
font-size: 16px;
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 32px;
}
.feature-card {
background: var(--card-bg);
border: 1px solid var(--border);
border-radius: 24px;
padding: 40px 30px;
transition: all 0.3s ease;
}
.feature-card:hover {
transform: translateY(-6px);
border-color: rgba(255,255,255,0.15);
box-shadow: 0 20px 40px rgba(0,0,0,0.4);
}
.icon-box {
width: 54px;
height: 54px;
border-radius: 16px;
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 24px;
font-size: 24px;
}
.feature-card h3 {
font-size: 20px;
font-weight: 700;
margin-bottom: 12px;
}
.feature-card p {
color: var(--text-muted);
font-size: 15px;
line-height: 1.6;
}
/* --- Footer Section --- */
footer {
border-top: 1px solid var(--border);
padding: 60px 8% 40px 8%;
background: #06060A;
}
.footer-top {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
gap: 40px;
margin-bottom: 60px;
}
.footer-info {
max-width: 320px;
}
.footer-info p {
color: var(--text-muted);
font-size: 14px;
margin-top: 16px;
}
.footer-links {
display: flex;
gap: 80px;
flex-wrap: wrap;
}
.link-group h4 {
font-size: 15px;
font-weight: 700;
margin-bottom: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
color: #FFFFFF;
}
.link-group ul {
list-style: none;
}
.link-group ul li {
margin-bottom: 12px;
}
.link-group ul li a {
color: var(--text-muted);
text-decoration: none;
font-size: 14px;
transition: color 0.2s ease;
}
.link-group ul li a:hover {
color: #FFFFFF;
}
.footer-bottom {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 20px;
font-size: 14px;
color: rgba(255, 255, 255, 0.3);
}
.footer-bottom strong {
color: rgba(255, 255, 255, 0.5);
font-weight: 600;
}
/* --- Responsive Queries --- */
@media (max-width: 768px) {
header {
padding: 20px 5%;
}
.features-section {
padding: 80px 5%;
}
footer {
padding: 60px 5% 40px 5%;
}
.footer-links {
gap: 40px;
}
}
</style>
</head>
<body>
<!-- Header / Navigation -->
<header>
<div class="logo-container">
<img class="logo-img" src="instructions_web/logo.png" alt="Siro App Logo">
<span class="logo-text">Siro</span>
</div>
<nav>
<a href="#features">Features</a>
<a href="privacy_policy.php">Privacy</a>
<a href="instructions_web/delete_account.html">Delete Account</a>
</nav>
</header>
<!-- Hero Section -->
<section class="hero">
<div class="badge">Safe & Smart Journeys</div>
<h1>Siro - Your Smart Ride Begins Here</h1>
<p class="subtitle">The safest, most reliable, and affordable ride-sharing app in the region. Seamlessly connect with verified captains instantly.</p>
<div class="cta-container">
<a href="instructions_web/delete_account.html" class="btn btn-primary">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M17 1H7c-1.1 0-2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 18H7V5h10v14z"/></svg>
Get App for iOS
</a>
<a href="instructions_web/delete_account.html" class="btn btn-secondary">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M17.6 9.48l-1.9-1.9c-.4-.4-1-.4-1.4 0L6 15.82v3.3h3.3l8.3-8.3c.4-.4.4-1 0-1.34zM20.3 7.3l-1.6-1.6c-.4-.4-1-.4-1.4 0l-1.3 1.3 3 3 1.3-1.3c.4-.4.4-1 0-1.4z"/></svg>
Get App for Android
</a>
</div>
<div class="mockup-wrapper">
<div class="mockup-inner">
<img src="instructions_web/logo.png" alt="Siro App Visual">
<div class="play-indicator">
<svg width="24" height="24" viewBox="0 0 24 24" fill="#FFFFFF"><path d="M8 5v14l11-7z"/></svg>
</div>
</div>
</div>
</section>
<!-- Features Section -->
<section id="features" class="features-section">
<div class="section-header">
<h2>Why Choose Siro?</h2>
<p>Designed with your safety, comfort, and affordability in mind.</p>
</div>
<div class="features-grid">
<!-- Feature 1 -->
<div class="feature-card">
<div class="icon-box" style="background: rgba(59, 130, 246, 0.1); color: #3B82F6;">
🔒
</div>
<h3>Uncompromising Safety</h3>
<p>Verified captains, in-app VoIP calls to secure your personal number, and recorded trips to ensure a stress-free travel experience.</p>
</div>
<!-- Feature 2 -->
<div class="feature-card">
<div class="icon-box" style="background: rgba(16, 185, 129, 0.1); color: #10B981;">
</div>
<h3>Smart Location Matching</h3>
<p>Advanced real-time location matching routes you to the nearest available captain, minimizing wait time and optimizing routing.</p>
</div>
<!-- Feature 3 -->
<div class="feature-card">
<div class="icon-box" style="background: rgba(239, 68, 68, 0.1); color: #EF4444;">
💰
</div>
<h3>Fair & Transparent Rates</h3>
<p>Competitive pricing with absolute transparency. Enjoy card and wallet payments to keep your payment flows smooth and hassle-free.</p>
</div>
</div>
</section>
<!-- Footer -->
<footer>
<div class="footer-top">
<div class="footer-info">
<div class="logo-container" style="margin-bottom: 16px;">
<img class="logo-img" src="instructions_web/logo.png" alt="Siro Logo">
<span class="logo-text" style="color: #FFFFFF;">Siro</span>
</div>
<p>Siro LLC is committed to providing safe, comfortable, and highly reliable ride-sharing services across the region.</p>
</div>
<div class="footer-links">
<div class="link-group">
<h4>Legals</h4>
<ul>
<li><a href="privacy_policy.php">Privacy Policy</a></li>
<li><a href="instructions_web/delete_account.html">Account Deletion</a></li>
</ul>
</div>
<div class="link-group">
<h4>Support</h4>
<ul>
<li><a href="instructions_web/delete_account.html">Help Center</a></li>
<li><a href="mailto:support@siromove.com">Contact Us</a></li>
</ul>
</div>
</div>
</div>
<div class="footer-bottom">
<p>&copy; All rights reserved by <strong>Siro LLC</strong></p>
<p>Designed with excellence.</p>
</div>
</footer>
</body>
</html>

View File

@@ -1,67 +1,169 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html lang="en">
<head> <head>
<title>Delete Account</title> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Delete Account - Siro</title>
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;700&display=swap" rel="stylesheet">
<style> <style>
:root {
--primary: #0A66C2;
--primary-gradient: linear-gradient(135deg, #2563EB 0%, #1D4ED8 100%);
--bg: #0D0D14;
--card-bg: rgba(255, 255, 255, 0.03);
--text-main: #FFFFFF;
--text-muted: #94A3B8;
--border: rgba(255, 255, 255, 0.08);
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body { body {
font-family: sans-serif; font-family: 'Outfit', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background-color: var(--bg);
color: var(--text-main);
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 20px;
overflow-x: hidden;
background-image:
radial-gradient(circle at 10% 20%, rgba(37, 99, 235, 0.15) 0%, transparent 40%),
radial-gradient(circle at 90% 80%, rgba(29, 78, 216, 0.1) 0%, transparent 40%);
}
.container {
max-width: 500px;
width: 100%;
background: var(--card-bg);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border: 1px solid var(--border);
border-radius: 28px;
padding: 40px 30px;
text-align: center;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.container:hover {
transform: translateY(-4px);
box-shadow: 0 30px 60px -10px rgba(0, 0, 0, 0.6);
}
.logo-wrapper {
margin-bottom: 24px;
display: inline-block;
position: relative;
}
.logo-wrapper::after {
content: '';
position: absolute;
top: -8px;
left: -8px;
right: -8px;
bottom: -8px;
border-radius: 50%;
background: var(--primary-gradient);
z-index: -1;
opacity: 0.2;
filter: blur(8px);
}
.app-logo {
width: 90px;
height: 90px;
border-radius: 50%;
object-fit: cover;
border: 2px solid var(--border);
background: #FFFFFF;
padding: 2px;
} }
h1 { h1 {
top: 20px; font-size: 28px;
margin-top: 0; font-weight: 700;
margin-bottom: 16px;
letter-spacing: -0.5px;
background: linear-gradient(to right, #FFFFFF, #E2E8F0);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.video-container {
position: relative;
width: 100%;
border-radius: 20px;
overflow: hidden;
border: 1px solid var(--border);
margin-bottom: 24px;
background: #000;
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.4);
} }
video { video {
width: 100%; width: 100%;
max-width: 600px; max-height: 480px;
margin-bottom: 20px; display: block;
object-fit: cover;
} }
p { .instructions {
line-height: 1.5em; font-size: 15px;
line-height: 1.6;
color: var(--text-muted);
text-align: center;
} }
.app-logo { .instructions strong {
position: absolute; color: #FFFFFF;
top: 20px; font-weight: 600;
left: 0;
width: 100px;
height: 100px;
} }
footer { footer {
position: absolute; margin-top: 40px;
bottom: 0; font-size: 13px;
left: 50%; color: rgba(255, 255, 255, 0.3);
transform: translate(-50%, -50%); letter-spacing: 0.5px;
width: 100px; }
height: 100px;
footer strong {
color: rgba(255, 255, 255, 0.5);
font-weight: 600;
} }
</style> </style>
</head> </head>
<body> <body>
<img width="100px" height="100px" src="logo.gif" alt="App logo"> <div class="container">
<div class="logo-wrapper">
<img class="app-logo" src="logo.png" alt="Siro App Logo">
</div>
<h1>Delete Account</h1> <h1>Delete Account</h1>
<video width="100" height="440" controls> <div class="video-container">
<video controls poster="logo.png">
<source src="animation.mp4" type="video/mp4"> <source src="animation.mp4" type="video/mp4">
Your browser does not support the video tag.
</video> </video>
</div>
<p>To delete your account, please open the app and go to the <strong><em>Profile</em></strong> page. Then, tap on <div class="instructions">
the "<strong><em>Delete My Account</em></strong>" button and follow the instructions.</p> <p>To delete your account, please open the app and navigate to the <strong>Profile</strong> page. Tap on the <strong>Delete My Account</strong> button and follow the instructions.</p>
</div>
</div>
<!-- <footer> --> <footer>
<p> <p>&copy; All rights reserved by <strong>Siro LLC</strong></p>
© </footer>
All rights reserved by <strong><em> SEFER </em></strong>
</p>
<!-- </footer> -->
</body> </body>
</html> </html>

View File

@@ -32,7 +32,7 @@ dependencies:
flutter_webrtc: ^1.4.1 flutter_webrtc: ^1.4.1
fl_chart: ^1.2.0 fl_chart: ^1.2.0
flutter_confetti: ^0.5.1 flutter_confetti: ^0.5.1
flutter_font_icons: ^2.2.5 flutter_font_icons: ^3.0.0
flutter_rating_bar: ^4.0.1 flutter_rating_bar: ^4.0.1
flutter_staggered_animations: ^1.1.1 flutter_staggered_animations: ^1.1.1
flutter_svg: ^2.2.0 flutter_svg: ^2.2.0

View File

@@ -62,7 +62,7 @@ android {
defaultConfig { defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.siro.siro_rider" applicationId = "com.siro.rider"
// You can update the following values to match your application needs. // You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config. // For more information, see: https://flutter.dev/to/review-gradle-config.
minSdkVersion = 30 minSdkVersion = 30

View File

@@ -7,3 +7,7 @@ android.nonFinalResIds=true
dart.obfuscation=true dart.obfuscation=true
android.enableR8.fullMode=true android.enableR8.fullMode=true
org.gradle.java.home=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home org.gradle.java.home=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false

View File

@@ -585,10 +585,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_font_icons name: flutter_font_icons
sha256: d06eb0ab903d0e90a9a758de30892ea0d43221f03dad059970384e62479c787e sha256: f48e33076b5d97861057e9a9d64544afdbaa8fd0ab0e2f082bc8084a384e7239
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.7" version: "3.0.0"
flutter_launcher_icons: flutter_launcher_icons:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -1305,10 +1305,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: matcher name: matcher
sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6" sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.12.18" version: "0.12.19"
material_color_utilities: material_color_utilities:
dependency: transitive dependency: transitive
description: description:
@@ -1321,10 +1321,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.17.0" version: "1.18.0"
mime: mime:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -1909,10 +1909,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636" sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.9" version: "0.7.11"
timezone: timezone:
dependency: transitive dependency: transitive
description: description:

View File

@@ -2,7 +2,7 @@ name: siro_rider
description: "A new Flutter project." description: "A new Flutter project."
publish_to: "none" # Remove this line if you wish to publish to pub.dev publish_to: "none" # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1 version: 1.0.0+2
environment: environment:
sdk: ">=3.0.5 <4.0.0" sdk: ">=3.0.5 <4.0.0"
@@ -35,7 +35,7 @@ dependencies:
google_fonts: ^8.0.2 google_fonts: ^8.0.2
flutter_launcher_icons: ^0.14.4 flutter_launcher_icons: ^0.14.4
flutter_rating_bar: ^4.0.1 flutter_rating_bar: ^4.0.1
flutter_font_icons: ^2.2.7 flutter_font_icons: ^3.0.0
image_picker: ^1.2.1 image_picker: ^1.2.1
# camera: ^0.10.5+5 #to be remove # camera: ^0.10.5+5 #to be remove
flutter_widget_from_html: ^0.17.1 flutter_widget_from_html: ^0.17.1