Skip to content
Snippets Groups Projects
Commit d472b4da authored by Ethan-clay03's avatar Ethan-clay03
Browse files

Make admin only page, to begin manage booking UI next

parent 884cc0e6
No related branches found
No related tags found
No related merge requests found
......@@ -71,8 +71,7 @@ def create_app(config_class=Config):
if user and user.role:
identity.provides.add(RoleNeed(user.role.name))
if user.role.name == 'super-admin':
identity.provides.add(RoleNeed('admin')) # Super admin should also inherit admin permissions
auth_logger.debug(f'Roles provided to identity for {current_user}: {identity.provides}')
identity.provides.add(RoleNeed('admin'))
else:
auth_logger.debug(f'No role found for user {identity.user.username}.')
......@@ -121,7 +120,6 @@ def create_app(config_class=Config):
elif role.name == 'admin':
g.admin_permission = admin_permission
g.is_admin = True
auth_logger.debug(f'Permissions for {current_user}: Admin: {g.admin_permission}, User: {g.user_permission}, Super Admin: {g.super_admin_permission}')
login_manager.login_view = 'profile.login'
......
from flask import render_template, redirect, url_for
from app import admin_permission, permission_required, super_admin_permission
from app.admin import bp
from app.models import Listings, ListingImages
@bp.route('/manage_listings')
def manage_listings():
return render_template('admin/index.html', top_listings=top_listings, top_listing_images=top_listing_images)
\ No newline at end of file
@bp.route('/home')
@permission_required(admin_permission)
def index():
return render_template('admin/index.html')
@bp.route('/')
@permission_required(admin_permission)
def home():
return redirect(url_for('admin.home'))
@bp.route('/manage_bookings')
@permission_required(admin_permission)
def manage_bookings():
return render_template('admin/index.html')
@bp.route('/manage_users')
@permission_required(super_admin_permission)
def manage_users():
return render_template('admin/index.html')
@bp.route('/manage_user_bookings')
@permission_required(admin_permission)
def manage_user_bookings():
return render_template('admin/index.html')
\ No newline at end of file
......@@ -6,9 +6,7 @@ from werkzeug.security import check_password_hash
from app.profile import bp
from app.models import User
from app.logger import auth_logger
from app import admin_permission, permission_required, super_admin_permission
from app import db
from flask_principal import Principal, Permission, RoleNeed, identity_loaded
@bp.route('/signup', methods=['GET', 'POST'])
def signup():
......@@ -87,11 +85,6 @@ def login_post():
return redirect(url_for('profile.index'))
@bp.route('/admin/index')
@permission_required(admin_permission)
def admin_index():
return render_template('profile/admin-index.html')
@bp.route('/check-username', methods=['POST'])
def check_username():
......
{% extends 'base.html' %}
{% block content %}
<head>
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='listings.css')}}">
<script src="https://cdn.jsdelivr.net/npm/swiffy-slider@1.6.0/dist/js/swiffy-slider.min.js" crossorigin="anonymous" defer></script>
<link href="https://cdn.jsdelivr.net/npm/swiffy-slider@1.6.0/dist/css/swiffy-slider.min.css" rel="stylesheet" crossorigin="anonymous">
</head>
<div class="content">
<div class="deals_text"><span class="deals_underline">Deals for you</span></div>
<div class="swiffy-slider slider-item-show2 slider-item-reveal slider-nav-outside slider-nav-round slider-nav-visible slider-indicators-outside slider-indicators-round slider-indicators-dark slider-nav-animation slider-nav-animation-fadein slider-item-first-visible">
<ul class="slider-container py-4">
{% for listing in top_listings %}
<li class="slide-visible">
<div class="card shadow h-100">
<div class="ratio ratio-16x9">
<th>{{top_listing_images[listing.id]}}</th>
<img src="{{ url_for('main.upload_file', filename=top_listing_images[listing.id]) }}" class="card-img-top" loading="lazy" alt="Main Image">
</div>
<div class="card-body p-3 p-xl-4">
<h3 class="card-title h5">{{listing.destination_location}}</h3>
<p class="card-text">Add Location description here once implemented</p>
<div><a href="#" class="btn btn-primary">Book now</a>
</div>
</div>
</div>
</li>
{% endfor %}
<h2>Admin Panel</h2>
<ul class="center">
<li><a class="button_1" href="{{ url_for('admin.manage_bookings') }}">Manage Bookings</a></li>
<li><a class="button_1" href="{{ url_for('admin.manage_user_bookings') }}">Manage User Bookings</a></li>
{% if g.is_super_admin %}
<li><a class="button_1" href="{{ url_for('admin.manage_users') }}">Manage Users</a></li>
{% endif %}
</ul>
</div>
<button type="button" class="slider-nav" aria-label="Go left"></button>
<button type="button" class="slider-nav slider-nav-next" aria-label="Go left"></button>
<style>
.content {
text-align: center;
margin-top: 20px;
display: flex;
flex-direction: column;
align-items: center;
}
<div class="slider-indicators">
<button class="active" aria-label="Go to slide"></button>
<button aria-label="Go to slide" class=""></button>
<button aria-label="Go to slide" class=""></button>
<button aria-label="Go to slide" class=""></button>
</div>
</div>
</div>
.center {
list-style-type: none;
padding: 0;
margin: 0;
}
.center li {
margin: 10px 0;
}
.button_1 {
font-size: 26px;
}
@media (max-width: 500px) {
.button_1 {
font-size: 18px;
}
}
</style>
<div style="margin-left:50px"> <a href= "{{ url_for('bookings.listings') }}" class="button_1">View All Deals</a></div>
{% endblock %}
......@@ -40,7 +40,7 @@
<ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
{% if user_in_session %}
{% if g.is_admin %}
<li><a class="dropdown-item" href="{{ url_for('profile.admin_index') }}">Admin Options</a></li>
<li><a class="dropdown-item" href="{{ url_for('admin.index') }}">Admin Options</a></li>
{% endif %}
<li><a class="dropdown-item" href="{{ url_for('profile.index') }}">Account Details</a></li>
<li><a class="dropdown-item" href="{{ url_for('profile.manage_bookings')}}">My Bookings</a></li>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment