Browse Source

placeholder auth service

Rafał Pitoń 10 years ago
parent
commit
2e5593ad15

+ 23 - 0
misago/emberapp/app/initializers/auth-service.js

@@ -0,0 +1,23 @@
+import MisagoPreloadStore from 'misago/utils/preloadstore';
+import Auth from 'misago/services/auth';
+
+export function initialize(container, application) {
+  var auth = Auth.create({
+    'isAuthenticated': MisagoPreloadStore.get('isAuthenticated'),
+    'user': MisagoPreloadStore.get('user')
+  });
+
+  application.register('misago:auth', auth, { instantiate: false });
+  application.inject('route', 'auth', 'misago:auth');
+  application.inject('controller', 'auth', 'misago:auth');
+
+  application.register('misago:user', auth.get('user'), { instantiate: false });
+  application.inject('route', 'user', 'misago:user');
+  application.inject('controller', 'user', 'misago:user');
+
+}
+
+export default {
+  name: 'auth-service',
+  initialize: initialize
+};

+ 7 - 1
misago/emberapp/app/routes/application.js

@@ -73,11 +73,17 @@ export default Ember.Route.extend({
       return false;
     },
 
-    // Login Modal
+    // Auth
 
     openLoginModal: function() {
       this.controllerFor("loginModal").send('open');
       return false;
+    },
+
+    logOut: function() {
+      this.get('auth').logout();
+      Ember.$('#hidden-logout-form').submit();
+      return false;
     }
   }
 });

+ 11 - 0
misago/emberapp/app/services/auth.js

@@ -0,0 +1,11 @@
+import Ember from 'ember';
+
+export default Ember.Object.extend({
+  isAnonymous: function() {
+    return !this.get('isAuthenticated');
+  }.property('isAuthenticated'),
+
+  logout: function() {
+
+  }
+});

+ 4 - 0
misago/emberapp/app/templates/navbar.hbs

@@ -6,7 +6,11 @@
       <span>{{settings.forum_name}}</span>
     {{/link-to}}
 
+    {{#if user.isAuthenticated}}
+    {{render 'user-nav'}}
+    {{else}}
     {{render 'guest-nav'}}
+    {{/if}}
 
   </div><!-- /.container -->
 </nav>

+ 7 - 0
misago/emberapp/app/templates/user-nav.hbs

@@ -0,0 +1,7 @@
+<div class="user-nav navbar-right">
+  <p class="navbar-text">{{user.username}}</p>
+
+  <button type="button" class="btn btn-danger navbar-btn btn-sm" {{action "logOut"}}>
+    {{gettext "Log out"}}
+  </button>
+</div>

+ 15 - 0
misago/emberapp/tests/unit/services/auth-test.js

@@ -0,0 +1,15 @@
+import {
+  moduleFor,
+  test
+} from 'ember-qunit';
+
+moduleFor('service:auth', {
+  // Specify the other units that are required for this test.
+  // needs: ['service:foo']
+});
+
+// Replace this with your real tests.
+test('it exists', function(assert) {
+  var service = this.subject();
+  assert.ok(service);
+});

+ 17 - 1
misago/users/middleware.py

@@ -35,9 +35,25 @@ class UserMiddleware(object):
         request.user.ip = request._misago_real_ip
 
         request.preloaded_ember_data.update({
-            'isAuthenticated': request.user.is_authenticated()
+            'isAuthenticated': request.user.is_authenticated(),
         })
 
+        if request.user.is_authenticated():
+            request.preloaded_ember_data.update({
+                'user': {
+                    'username': request.user.username,
+                    'isAuthenticated': True,
+                    'isAnonymous': False
+                }
+            })
+        else:
+            request.preloaded_ember_data.update({
+                'user': {
+                    'isAuthenticated': False,
+                    'isAnonymous': True
+                }
+            })
+
 
 class OnlineTrackerMiddleware(object):
     def process_request(self, request):

+ 1 - 9
misago/users/views/auth.py

@@ -24,11 +24,6 @@ def login(request):
     if request.method == 'POST':
         form = AuthenticationForm(request, data=request.POST)
         if form.is_valid():
-
-            message = _("Welcome back, %(user)s! You have been "
-                        "signed in successfully.")
-            messages.success(
-                request, message % {'user': form.user_cache.username})
             auth.login(request, form.user_cache)
             return redirect(settings.LOGIN_REDIRECT_URL)
 
@@ -40,8 +35,5 @@ def login(request):
 @require_POST
 @csrf_protect
 def logout(request):
-    message = _("%(user)s, you have been signed out.")
-    messages.info(
-        request, message % {'user': request.user.username})
     auth.logout(request)
-    return redirect('misago:index')
+    return redirect(settings.LOGIN_REDIRECT_URL)