Mercurial > wikked
view wikked/views/admin.py @ 196:cbf7db1ff0d5
Better authentication handling:
- Not bundling user info with every response anymore.
- Ability to optionally bundle user info with the page read API endpoint.
- New API endpoint for current user info.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 09 Feb 2014 20:46:22 -0800 |
parents | d7890b46358e |
children | 20f37951b813 |
line wrap: on
line source
from flask import g, jsonify, abort, request from flask.ext.login import login_user, logout_user, current_user from wikked.web import app, login_manager @app.route('/api/admin/reindex', methods=['POST']) def api_admin_reindex(): if not current_user.is_authenticated() or not current_user.is_admin(): return login_manager.unauthorized() g.wiki.index.reset(g.wiki.getPages()) result = {'ok': 1} return jsonify(result) @app.route('/api/user/login', methods=['POST']) def api_user_login(): username = request.form.get('username') password = request.form.get('password') remember = request.form.get('remember') user = g.wiki.auth.getUser(username) if user is not None and app.bcrypt: if app.bcrypt.check_password_hash(user.password, password): login_user(user, remember=bool(remember)) result = {'username': username, 'logged_in': 1} return jsonify(result) abort(401) @app.route('/api/user/is_logged_in') def api_user_is_logged_in(): if current_user.is_authenticated(): result = {'logged_in': True} return jsonify(result) abort(401) @app.route('/api/user/logout', methods=['POST']) def api_user_logout(): logout_user() result = {'ok': 1} return jsonify(result) @app.route('/api/user/info') def api_current_user_info(): user = current_user if user.is_authenticated(): result = { 'user': { 'username': current_user.username, 'groups': current_user.groups } } return jsonify(result) return jsonify({'user': False}) @app.route('/api/user/info/<name>') def api_user_info(name): user = g.wiki.auth.getUser(name) if user is not None: result = { 'user': { 'username': user.username, 'groups': user.groups } } return jsonify(result) abort(404)