Updated the profile page

This commit is contained in:
Pinga 2023-11-16 16:52:44 +02:00
parent 5d0778526c
commit ac61a4c3ad
7 changed files with 45 additions and 672 deletions

View file

@ -2,111 +2,30 @@
namespace App\Controllers;
use App\Models\User;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Container\ContainerInterface;
class ProfileController extends Controller
{
public function profile(Request $request, Response $response)
{
$username = $_SESSION['auth_username'];
$email = $_SESSION['auth_email'];
$status = $_SESSION['auth_status'];
if ($status == 0) {
$status = "Confirmed";
} else {
$status = "Unknown";
}
$roles = $_SESSION['auth_roles'];
if ($roles == 0) {
$role = "Admin";
} else {
$role = "Unknown";
}
public function profile(Request $request, Response $response)
{
$username = $_SESSION['auth_username'];
$email = $_SESSION['auth_email'];
$status = $_SESSION['auth_status'];
if ($status == 0) {
$status = "Confirmed";
} else {
$status = "Unknown";
}
$roles = $_SESSION['auth_roles'];
if ($roles == 0) {
$role = "Admin";
} else {
$role = "Unknown";
}
return view($response,'admin/profile/profile.twig',['email' => $email, 'username' => $username, 'status' => $status, 'role' => $role]);
}
public function notifications(Request $request, Response $response)
{
$username = $_SESSION['auth_username'];
$email = $_SESSION['auth_email'];
$status = $_SESSION['auth_status'];
if ($status == 0) {
$status = "Confirmed";
} else {
$status = "Unknown";
}
$roles = $_SESSION['auth_roles'];
if ($roles == 0) {
$role = "Admin";
} else {
$role = "Unknown";
}
return view($response,'admin/profile/notifications.twig',['email' => $email, 'username' => $username, 'status' => $status, 'role' => $role]);
}
public function security(Request $request, Response $response)
{
$username = $_SESSION['auth_username'];
$email = $_SESSION['auth_email'];
$status = $_SESSION['auth_status'];
if ($status == 0) {
$status = "Confirmed";
} else {
$status = "Unknown";
}
$roles = $_SESSION['auth_roles'];
if ($roles == 0) {
$role = "Admin";
} else {
$role = "Unknown";
}
return view($response,'admin/profile/security.twig',['email' => $email, 'username' => $username, 'status' => $status, 'role' => $role]);
}
public function plans(Request $request, Response $response)
{
$username = $_SESSION['auth_username'];
$email = $_SESSION['auth_email'];
$status = $_SESSION['auth_status'];
if ($status == 0) {
$status = "Confirmed";
} else {
$status = "Unknown";
}
$roles = $_SESSION['auth_roles'];
if ($roles == 0) {
$role = "Admin";
} else {
$role = "Unknown";
}
return view($response,'admin/profile/plans.twig',['email' => $email, 'username' => $username, 'status' => $status, 'role' => $role]);
}
public function invoices(Request $request, Response $response)
{
$username = $_SESSION['auth_username'];
$email = $_SESSION['auth_email'];
$status = $_SESSION['auth_status'];
if ($status == 0) {
$status = "Confirmed";
} else {
$status = "Unknown";
}
$roles = $_SESSION['auth_roles'];
if ($roles == 0) {
$role = "Admin";
} else {
$role = "Unknown";
}
return view($response,'admin/profile/invoices.twig',['email' => $email, 'username' => $username, 'status' => $status, 'role' => $role]);
}
}
}

View file

@ -1,112 +0,0 @@
{% extends "layouts/app.twig" %}
{% block title %}Invoices{% endblock %}
{% block content %}
<div class="page-wrapper">
<!-- Page header -->
<div class="page-header d-print-none">
<div class="container-xl">
<div class="row g-2 align-items-center">
<div class="col">
<!-- Page pre-title -->
<div class="page-pretitle">
Overview
</div>
<h2 class="page-title">
Profile
</h2>
</div>
</div>
</div>
</div>
<!-- Page body -->
<div class="page-body">
<div class="container-xl">
<div class="card">
<div class="row g-0">
<div class="col-3 d-none d-md-block border-end">
<div class="card-body">
<h4 class="subheader">Settings</h4>
<div class="list-group list-group-transparent">
<a href="{{route('profile')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('profile') %} active{% endif %}">My Account</a>
<a href="{{route('notifications')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('notifications') %} active{% endif %}">Notifications</a>
<a href="{{route('security')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('security') %} active{% endif %}">Security</a>
<a href="{{route('plans')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('plans') %} active{% endif %}">Plans</a>
<a href="{{route('invoices')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('invoices') %} active{% endif %}">Invoices</a>
</div>
</div>
</div>
<div class="col d-flex flex-column">
<div class="card-body">
<form action="{{route('change.password')}}" name="register" method="post">
{{ csrf.field | raw }}
<h2 class="mb-4">Invoices</h2>
<h3 class="card-title">Profile Details</h3>
<div class="row g-3">
<div class="col-md">
<div class="form-label">User Name</div>
<div class="form-control-plaintext">{{ username }}</div>
</div>
<div class="col-md">
<div class="form-label">Email</div>
<div class="form-control-plaintext">{{ email }}</div>
</div>
<div class="col-md">
<div class="form-label">Status</div>
<span class="badge bg-green mt-2">{{ status }}</span>
</div>
<div class="col-md">
<div class="form-label">Role</div>
<span class="badge bg-blue mt-2">{{ role }}</span>
</div>
</div>
<h3 class="card-title mt-4">Change Password</h3>
<div class="row g-3">
<div class="col-md">
<div class="form-label required">Old Password</div>
<input type="password" class="form-control{{ errors.old_password ? ' is-invalid' : '' }}" name="old_password" placeholder="Enter old password" required>
{% if errors.old_password %}
<small class="form-hint">{{ errors.old_password | first }}</small>
{% endif %}
</div>
<div class="col-md">
<div class="form-label required">New Password</div>
<input type="password" class="form-control{{ errors.new_password ? ' is-invalid' : '' }}" name="new_password" placeholder="Enter new password" required>
{% if errors.new_password %}
<small class="form-hint">{{ errors.new_password | first }}</small>
{% endif %}
</div>
</div>
</div>
<div class="card-footer bg-transparent mt-auto">
<div class="btn-list justify-content-end">
<a href="{{route('home')}}" class="btn">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-arrow-back" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M9 11l-4 4l4 4m-4 -4h11a4 4 0 0 0 0 -8h-1"></path></svg> Back
</a>
<button type="submit" class="btn btn-primary">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-refresh" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4"></path><path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4"></path></svg> Update
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<footer class="footer footer-transparent d-print-none">
<div class="container-xl">
<div class="col-12 col-lg-auto mt-3 mt-lg-0">
<ul class="list-inline list-inline-dots mb-0">
<li class="list-inline-item">
Copyright &copy; 2023
<a href="https://getpinga.com" class="link-secondary">Pinga</a>.
</li>
</ul>
</div>
</div>
</div>
</footer>
</div>
{% endblock %}

View file

@ -1,112 +0,0 @@
{% extends "layouts/app.twig" %}
{% block title %}Notifications{% endblock %}
{% block content %}
<div class="page-wrapper">
<!-- Page header -->
<div class="page-header d-print-none">
<div class="container-xl">
<div class="row g-2 align-items-center">
<div class="col">
<!-- Page pre-title -->
<div class="page-pretitle">
Overview
</div>
<h2 class="page-title">
Profile
</h2>
</div>
</div>
</div>
</div>
<!-- Page body -->
<div class="page-body">
<div class="container-xl">
<div class="card">
<div class="row g-0">
<div class="col-3 d-none d-md-block border-end">
<div class="card-body">
<h4 class="subheader">Settings</h4>
<div class="list-group list-group-transparent">
<a href="{{route('profile')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('profile') %} active{% endif %}">My Account</a>
<a href="{{route('notifications')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('notifications') %} active{% endif %}">Notifications</a>
<a href="{{route('security')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('security') %} active{% endif %}">Security</a>
<a href="{{route('plans')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('plans') %} active{% endif %}">Plans</a>
<a href="{{route('invoices')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('invoices') %} active{% endif %}">Invoices</a>
</div>
</div>
</div>
<div class="col d-flex flex-column">
<div class="card-body">
<form action="{{route('change.password')}}" name="register" method="post">
{{ csrf.field | raw }}
<h2 class="mb-4">Notifications</h2>
<h3 class="card-title">Profile Details</h3>
<div class="row g-3">
<div class="col-md">
<div class="form-label">User Name</div>
<div class="form-control-plaintext">{{ username }}</div>
</div>
<div class="col-md">
<div class="form-label">Email</div>
<div class="form-control-plaintext">{{ email }}</div>
</div>
<div class="col-md">
<div class="form-label">Status</div>
<span class="badge bg-green mt-2">{{ status }}</span>
</div>
<div class="col-md">
<div class="form-label">Role</div>
<span class="badge bg-blue mt-2">{{ role }}</span>
</div>
</div>
<h3 class="card-title mt-4">Change Password</h3>
<div class="row g-3">
<div class="col-md">
<div class="form-label required">Old Password</div>
<input type="password" class="form-control{{ errors.old_password ? ' is-invalid' : '' }}" name="old_password" placeholder="Enter old password" required>
{% if errors.old_password %}
<small class="form-hint">{{ errors.old_password | first }}</small>
{% endif %}
</div>
<div class="col-md">
<div class="form-label required">New Password</div>
<input type="password" class="form-control{{ errors.new_password ? ' is-invalid' : '' }}" name="new_password" placeholder="Enter new password" required>
{% if errors.new_password %}
<small class="form-hint">{{ errors.new_password | first }}</small>
{% endif %}
</div>
</div>
</div>
<div class="card-footer bg-transparent mt-auto">
<div class="btn-list justify-content-end">
<a href="{{route('home')}}" class="btn">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-arrow-back" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M9 11l-4 4l4 4m-4 -4h11a4 4 0 0 0 0 -8h-1"></path></svg> Back
</a>
<button type="submit" class="btn btn-primary">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-refresh" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4"></path><path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4"></path></svg> Update
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<footer class="footer footer-transparent d-print-none">
<div class="container-xl">
<div class="col-12 col-lg-auto mt-3 mt-lg-0">
<ul class="list-inline list-inline-dots mb-0">
<li class="list-inline-item">
Copyright &copy; 2023
<a href="https://getpinga.com" class="link-secondary">Pinga</a>.
</li>
</ul>
</div>
</div>
</div>
</footer>
</div>
{% endblock %}

View file

@ -1,189 +0,0 @@
{% extends "layouts/app.twig" %}
{% block title %}Plans{% endblock %}
{% block content %}
<div class="page-wrapper">
<!-- Page header -->
<div class="page-header d-print-none">
<div class="container-xl">
<div class="row g-2 align-items-center">
<div class="col">
<!-- Page pre-title -->
<div class="page-pretitle">
Overview
</div>
<h2 class="page-title">
Profile
</h2>
</div>
</div>
</div>
</div>
<!-- Page body -->
<div class="page-body">
<div class="container-xl">
<div class="card">
<div class="row g-0">
<div class="col-3 d-none d-md-block border-end">
<div class="card-body">
<h4 class="subheader">Settings</h4>
<div class="list-group list-group-transparent">
<a href="{{route('profile')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('profile') %} active{% endif %}">My Account</a>
<a href="{{route('notifications')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('notifications') %} active{% endif %}">Notifications</a>
<a href="{{route('security')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('security') %} active{% endif %}">Security</a>
<a href="{{route('plans')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('plans') %} active{% endif %}">Plans</a>
<a href="{{route('invoices')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('invoices') %} active{% endif %}">Invoices</a>
</div>
</div>
</div>
<div class="col d-flex flex-column">
<div class="card-body">
<h2 class="mb-4">Plans</h2>
<p class="text-muted mb-4">This workspaces Basic Plan is set to $34 per month and will renew on June 19, 2022.</p>
<div class="row row-cards">
<div class="col-lg-4">
<div class="card card-md">
<div class="card-body text-center">
<div class="text-uppercase text-muted font-weight-medium">Free</div>
<div class="display-5 fw-bold my-3">$0</div>
<ul class="list-unstyled lh-lg">
<li><strong>3</strong> Users</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/check -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-success" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12l5 5l10 -10" /></svg>
Sharing Tools
</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/x -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-danger" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><line x1="18" y1="6" x2="6" y2="18" /><line x1="6" y1="6" x2="18" y2="18" /></svg>
Design Tools
</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/x -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-danger" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><line x1="18" y1="6" x2="6" y2="18" /><line x1="6" y1="6" x2="18" y2="18" /></svg>
Private Messages
</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/x -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-danger" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><line x1="18" y1="6" x2="6" y2="18" /><line x1="6" y1="6" x2="18" y2="18" /></svg>
Twitter API
</li>
</ul>
<div class="text-center mt-4">
<a href="#" class="btn w-100">Choose plan</a>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card card-md">
<div class="ribbon ribbon-top ribbon-bookmark bg-green">
<!-- Download SVG icon from http://tabler-icons.io/i/star -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z" /></svg>
</div>
<div class="card-body text-center">
<div class="text-uppercase text-muted font-weight-medium">Premium</div>
<div class="display-5 fw-bold my-3">$49</div>
<ul class="list-unstyled lh-lg">
<li><strong>10</strong> Users</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/check -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-success" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12l5 5l10 -10" /></svg>
Sharing Tools
</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/check -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-success" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12l5 5l10 -10" /></svg>
Design Tools
</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/x -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-danger" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><line x1="18" y1="6" x2="6" y2="18" /><line x1="6" y1="6" x2="18" y2="18" /></svg>
Private Messages
</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/x -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-danger" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><line x1="18" y1="6" x2="6" y2="18" /><line x1="6" y1="6" x2="18" y2="18" /></svg>
Twitter API
</li>
</ul>
<div class="text-center mt-4">
<a href="#" class="btn btn-green w-100">Choose plan</a>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card card-md">
<div class="card-body text-center">
<div class="text-uppercase text-muted font-weight-medium">Enterprise</div>
<div class="display-5 fw-bold my-3">$99</div>
<ul class="list-unstyled lh-lg">
<li><strong>100</strong> Users</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/check -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-success" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12l5 5l10 -10" /></svg>
Sharing Tools
</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/check -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-success" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12l5 5l10 -10" /></svg>
Design Tools
</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/check -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-success" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12l5 5l10 -10" /></svg>
Private Messages
</li>
<li>
<!-- Download SVG icon from http://tabler-icons.io/i/x -->
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-1 text-danger" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><line x1="18" y1="6" x2="6" y2="18" /><line x1="6" y1="6" x2="18" y2="18" /></svg>
Twitter API
</li>
</ul>
<div class="text-center mt-4">
<a href="#" class="btn w-100">Choose plan</a>
</div>
</div>
</div>
</div>
<div class="col-12">
<div class="card card-md">
<div class="card-body">
<div class="row align-items-center">
<div class="col">
<h2 class="h3">Enterprise-ready. Reach out for a custom quote.</h2>
<p class="m-0 text-muted">Tabler is designed to work great for large enterprises. Take a look at our feature comparison.</p>
</div>
<div class="col-auto">
<a href="#" class="btn">
Book a demo
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer class="footer footer-transparent d-print-none">
<div class="container-xl">
<div class="col-12 col-lg-auto mt-3 mt-lg-0">
<ul class="list-inline list-inline-dots mb-0">
<li class="list-inline-item">
Copyright &copy; 2023
<a href="https://getpinga.com" class="link-secondary">Pinga</a>.
</li>
</ul>
</div>
</div>
</div>
</footer>
</div>
{% endblock %}

View file

@ -1,6 +1,6 @@
{% extends "layouts/app.twig" %}
{% block title %}Profile{% endblock %}
{% block title %}{{ __('My Profile') }}{% endblock %}
{% block content %}
<div class="page-wrapper">
@ -11,10 +11,10 @@
<div class="col">
<!-- Page pre-title -->
<div class="page-pretitle">
Overview
{{ __('Overview') }}
</div>
<h2 class="page-title">
Profile
{{ __('My Profile') }}
</h2>
</div>
</div>
@ -24,74 +24,57 @@
<div class="page-body">
<div class="container-xl">
<div class="card">
<div class="row g-0">
<div class="col-3 d-none d-md-block border-end">
<div class="card-body">
<h4 class="subheader">Settings</h4>
<div class="list-group list-group-transparent">
<a href="{{route('profile')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('profile') %} active{% endif %}">My Account</a>
<a href="{{route('notifications')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('notifications') %} active{% endif %}">Notifications</a>
<a href="{{route('security')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('security') %} active{% endif %}">Security</a>
<a href="{{route('plans')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('plans') %} active{% endif %}">Plans</a>
<a href="{{route('invoices')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('invoices') %} active{% endif %}">Invoices</a>
</div>
</div>
</div>
<div class="col d-flex flex-column">
<div class="card-body">
<form action="{{route('change.password')}}" name="register" method="post">
{{ csrf.field | raw }}
<h2 class="mb-4">My Account</h2>
<h3 class="card-title">Profile Details</h3>
<form action="{{route('change.password')}}" name="register" method="post">
{{ csrf.field | raw }}
<h5 class="card-title">{{ __('Details') }}</h5>
<div class="row g-3">
<div class="col-md">
<div class="form-label">User Name</div>
<div class="form-control-plaintext">{{ username }}</div>
<div class="form-label">{{ __('User Name') }}</div>
<div class="form-control-plaintext">{{ username }}</div>
</div>
<div class="col-md">
<div class="form-label">Email</div>
<div class="form-control-plaintext">{{ email }}</div>
<div class="form-label">{{ __('Email') }}</div>
<div class="form-control-plaintext">{{ email }}</div>
</div>
<div class="col-md">
<div class="form-label">Status</div>
<span class="badge bg-green mt-2">{{ status }}</span>
<div class="form-label">{{ __('Status') }}</div>
<span class="badge bg-green text-bg-green mt-2">{{ status }}</span>
</div>
<div class="col-md">
<div class="form-label">Role</div>
<span class="badge bg-blue mt-2">{{ role }}</span>
<div class="form-label">{{ __('Role') }}</div>
<span class="badge bg-blue text-bg-blue mt-2">{{ role }}</span>
</div>
</div>
<h3 class="card-title mt-4">Change Password</h3>
<h3 class="card-title mt-4">{{ __('Change Password') }}</h3>
<div class="row g-3">
<div class="col-md">
<div class="form-label required">Old Password</div>
<div class="form-label required">{{ __('Old Password') }}</div>
<input type="password" class="form-control{{ errors.old_password ? ' is-invalid' : '' }}" name="old_password" placeholder="Enter old password" required>
{% if errors.old_password %}
<small class="form-hint">{{ errors.old_password | first }}</small>
{% endif %}
{% if errors.old_password %}
<small class="form-hint">{{ errors.old_password | first }}</small>
{% endif %}
</div>
<div class="col-md">
<div class="form-label required">New Password</div>
<div class="form-label required">{{ __('New Password') }}</div>
<input type="password" class="form-control{{ errors.new_password ? ' is-invalid' : '' }}" name="new_password" placeholder="Enter new password" required>
{% if errors.new_password %}
<small class="form-hint">{{ errors.new_password | first }}</small>
{% endif %}
{% if errors.new_password %}
<small class="form-hint">{{ errors.new_password | first }}</small>
{% endif %}
</div>
</div>
</div>
<div class="card-footer bg-transparent mt-auto">
<div class="btn-list justify-content-end">
<a href="{{route('home')}}" class="btn">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-arrow-back" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M9 11l-4 4l4 4m-4 -4h11a4 4 0 0 0 0 -8h-1"></path></svg> Back
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M9 11l-4 4l4 4m-4 -4h11a4 4 0 0 0 0 -8h-1"></path></svg> {{ __('Back') }}
</a>
<button type="submit" class="btn btn-primary">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-refresh" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4"></path><path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4"></path></svg> Update
<svg xmlns="http://www.w3.org/2000/svg" class="icon me-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4"></path><path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4"></path></svg> {{ __('Update') }}
</button>
</div>
</div>
</form>
</div>
</div>
</form>
</div>
</div>
</div>

View file

@ -1,112 +0,0 @@
{% extends "layouts/app.twig" %}
{% block title %}Security{% endblock %}
{% block content %}
<div class="page-wrapper">
<!-- Page header -->
<div class="page-header d-print-none">
<div class="container-xl">
<div class="row g-2 align-items-center">
<div class="col">
<!-- Page pre-title -->
<div class="page-pretitle">
Overview
</div>
<h2 class="page-title">
Profile
</h2>
</div>
</div>
</div>
</div>
<!-- Page body -->
<div class="page-body">
<div class="container-xl">
<div class="card">
<div class="row g-0">
<div class="col-3 d-none d-md-block border-end">
<div class="card-body">
<h4 class="subheader">Settings</h4>
<div class="list-group list-group-transparent">
<a href="{{route('profile')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('profile') %} active{% endif %}">My Account</a>
<a href="{{route('notifications')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('notifications') %} active{% endif %}">Notifications</a>
<a href="{{route('security')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('security') %} active{% endif %}">Security</a>
<a href="{{route('plans')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('plans') %} active{% endif %}">Plans</a>
<a href="{{route('invoices')}}" class="list-group-item list-group-item-action d-flex align-items-center{% if route_is('invoices') %} active{% endif %}">Invoices</a>
</div>
</div>
</div>
<div class="col d-flex flex-column">
<div class="card-body">
<form action="{{route('change.password')}}" name="register" method="post">
{{ csrf.field | raw }}
<h2 class="mb-4">Security</h2>
<h3 class="card-title">Profile Details</h3>
<div class="row g-3">
<div class="col-md">
<div class="form-label">User Name</div>
<div class="form-control-plaintext">{{ username }}</div>
</div>
<div class="col-md">
<div class="form-label">Email</div>
<div class="form-control-plaintext">{{ email }}</div>
</div>
<div class="col-md">
<div class="form-label">Status</div>
<span class="badge bg-green mt-2">{{ status }}</span>
</div>
<div class="col-md">
<div class="form-label">Role</div>
<span class="badge bg-blue mt-2">{{ role }}</span>
</div>
</div>
<h3 class="card-title mt-4">Change Password</h3>
<div class="row g-3">
<div class="col-md">
<div class="form-label required">Old Password</div>
<input type="password" class="form-control{{ errors.old_password ? ' is-invalid' : '' }}" name="old_password" placeholder="Enter old password" required>
{% if errors.old_password %}
<small class="form-hint">{{ errors.old_password | first }}</small>
{% endif %}
</div>
<div class="col-md">
<div class="form-label required">New Password</div>
<input type="password" class="form-control{{ errors.new_password ? ' is-invalid' : '' }}" name="new_password" placeholder="Enter new password" required>
{% if errors.new_password %}
<small class="form-hint">{{ errors.new_password | first }}</small>
{% endif %}
</div>
</div>
</div>
<div class="card-footer bg-transparent mt-auto">
<div class="btn-list justify-content-end">
<a href="{{route('home')}}" class="btn">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-arrow-back" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M9 11l-4 4l4 4m-4 -4h11a4 4 0 0 0 0 -8h-1"></path></svg> Back
</a>
<button type="submit" class="btn btn-primary">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-refresh" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4"></path><path d="M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4"></path></svg> Update
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<footer class="footer footer-transparent d-print-none">
<div class="container-xl">
<div class="col-12 col-lg-auto mt-3 mt-lg-0">
<ul class="list-inline list-inline-dots mb-0">
<li class="list-inline-item">
Copyright &copy; 2023
<a href="https://getpinga.com" class="link-secondary">Pinga</a>.
</li>
</ul>
</div>
</div>
</div>
</footer>
</div>
{% endblock %}

View file

@ -80,10 +80,6 @@ $app->group('', function ($route) {
$route->get('/support/media', SupportController::class .':mediakit')->setName('mediakit');
$route->get('/profile', ProfileController::class .':profile')->setName('profile');
$route->get('/profile/notifications', ProfileController::class .':notifications')->setName('notifications');
$route->get('/profile/security', ProfileController::class .':security')->setName('security');
$route->get('/profile/plans', ProfileController::class .':plans')->setName('plans');
$route->get('/profile/invoices', ProfileController::class .':invoices')->setName('invoices');
$route->get('/mode', HomeController::class .':mode')->setName('mode');
$route->get('/lang', HomeController::class .':lang')->setName('lang');
$route->get('/avatar', HomeController::class .':avatar')->setName('avatar');