Browse Source

Placeholder login/logout pages.

Rafał Pitoń 11 years ago
parent
commit
069e35d7b2

+ 11 - 0
misago/core/decorators.py

@@ -0,0 +1,11 @@
+from django.shortcuts import render
+
+def require_POST(f):
+    def decorator(request, *args, **kwargs):
+        if not request.method == 'POST':
+            response = render(request, 'misago/errorpages/wrong_way.html')
+            response.status_code = 405
+            return response
+        else:
+            return f(request, *args, **kwargs)
+    return decorator

+ 1 - 1
misago/core/errorpages.py

@@ -4,7 +4,7 @@ from misago.core.utils import is_request_to_misago
 
 def _error_page(request, code, message=None):
     response = render(request,
-                      'misago/%s.html' % code,
+                      'misago/errorpages/%s.html' % code,
                       {'message': message})
     response.status_code = code
     return response

+ 0 - 0
misago/templates/misago/403.html → misago/templates/misago/errorpages/403.html


+ 0 - 0
misago/templates/misago/404.html → misago/templates/misago/errorpages/404.html


+ 0 - 0
misago/templates/misago/csrf_failure.html → misago/templates/misago/errorpages/csrf_failure.html


+ 24 - 0
misago/templates/misago/errorpages/wrong_way.html

@@ -0,0 +1,24 @@
+{% extends "misago/base.html" %}
+
+{% load i18n %}
+
+
+{% block title %}{% trans "Wrong way" %} | {{ block.super }}{% endblock %}
+
+
+{% block content %}
+<div class="container">
+
+  <div class="error-message">
+
+    <div class="error-icon">
+      <span class="fa fa-road"></span>
+    </div>
+
+    <h1>{% trans "Page reached in wrong way." %}</h1>
+    <p>{% trans "This page should be reached via form submission or pressing button." %}</p>
+
+  </div>
+
+</div>
+{% endblock content %}

+ 20 - 0
misago/templates/misago/login.html

@@ -0,0 +1,20 @@
+{% extends "misago/base.html" %}
+
+
+{% block title %}
+{% if misago_settings.forum_index_title %}
+{{ misago_settings.forum_index_title }}
+{% else %}
+{{ misago_settings.forum_name }}
+{% endif %}
+{% endblock title %}
+
+
+{% block meta_description %}{{ misago_settings.forum_index_meta_description }}{% endblock meta_description %}
+
+
+{% block content %}
+<div class="container">
+  Hello world, I'm placeholder signin page!
+</div>
+{% endblock content %}

+ 1 - 1
misago/templates/misago/navbar.html

@@ -17,7 +17,7 @@
       {% if user.is_authenticated %}
       {% else %}
       <div class="navbar-nav-guest navbar-right">
-        <a href="#" class="btn btn-sign-in navbar-btn">{% trans "Sign in" %}</a>
+        <a href="{% url 'misago:login' %}" class="btn btn-sign-in navbar-btn">{% trans "Sign in" %}</a>
         <a href="#" class="btn btn-register navbar-btn">{% trans "Register" %}</a>
       </div>
       {% endif %}

+ 6 - 1
misago/urls.py

@@ -2,9 +2,14 @@ from django.conf.urls import patterns, include, url
 
 
 urlpatterns = patterns('misago.core',
-    # forum_index link symbolises "root" of Misago links space
+    # "misago:index" link symbolises "root" of Misago links space
     # any request with path that falls below this one is assumed to be directed
     # at Misago and will be handled by misago.views.exceptionhandler if it
     # results in Http404 or PermissionDenied exception
     url(r'^$', 'views.forum_index', name='index'),
 )
+
+# Register Misago Apps
+urlpatterns += patterns('',
+    url(r'^', include('misago.users.urls')),
+)

+ 22 - 0
misago/users/decorators.py

@@ -0,0 +1,22 @@
+from django.core.exceptions import PermissionDenied
+from django.utils.translation import gettext_lazy as _
+
+
+def deny_authenticated(f):
+    def decorator(request, *args, **kwargs):
+        if request.user.is_authenticated():
+            raise PermissionDenied(
+                _("This page is not available to signed in users."))
+        else:
+            return f(request, *args, **kwargs)
+    return decorator
+
+
+def deny_guests(f):
+    def decorator(request, *args, **kwargs):
+        if request.user.is_anonymous():
+            raise PermissionDenied(
+                _("This page is not available to guests."))
+        else:
+            return f(request, *args, **kwargs)
+    return decorator

+ 7 - 0
misago/users/urls.py

@@ -0,0 +1,7 @@
+from django.conf.urls import patterns, url
+
+
+urlpatterns = patterns('misago.users.views.auth',
+    url(r'^login/$', 'login', name='login'),
+    url(r'^logout/$', 'logout', name='logout'),
+)

+ 0 - 0
misago/users/views/__init__.py


+ 22 - 0
misago/users/views/auth.py

@@ -0,0 +1,22 @@
+from django.shortcuts import render, redirect
+from django.views.decorators.debug import sensitive_post_parameters
+from django.views.decorators.cache import never_cache
+from django.views.decorators.csrf import csrf_protect
+from misago.core.decorators import require_POST
+from misago.users.decorators import deny_authenticated, deny_guests
+
+
+@sensitive_post_parameters()
+@deny_authenticated
+@csrf_protect
+@never_cache
+def login(request):
+    return render(request, 'misago/login.html')
+
+
+@deny_guests
+@require_POST
+@csrf_protect
+@never_cache
+def logout(request):
+    raise NotImplementedError()