-
-
Save cstpraveen/8abf0eb1c57a11e56457ca1f75512c3c to your computer and use it in GitHub Desktop.
Revisions
-
chris-allan revised this gist
Jul 1, 2014 . 1 changed file with 16 additions and 7 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,27 +1,24 @@ from flask import Flask from flask.ext.mongoengine import MongoEngine from flask.ext.security import Security, MongoEngineUserDatastore, \ UserMixin, RoleMixin, login_required from flask.ext.principal import Permission, RoleNeed # Create app app = Flask(__name__) app.config['DEBUG'] = True app.config['SECRET_KEY'] = 'super-secret' # MongoDB Config app.config["MONGODB_HOST"] = "mongodb://localhost:27017/flask_security" app.config["MONGODB_DB"] = True # Create database connection object db = MongoEngine(app) # Create a permission with a single Need, in this case a RoleNeed. admin_permission = Permission(RoleNeed('admin')) class Role(db.Document, RoleMixin): @@ -49,6 +46,11 @@ def create_user(): user_datastore.create_user( email='[email protected]', password='abc123', roles=[test_role] ) admin_role = user_datastore.find_or_create_role('admin') user_datastore.create_user( email='[email protected]', password='abcd1234', roles=[admin_role] ) # Views @@ -58,5 +60,12 @@ def home(): return 'private' @app.route('/protected') @login_required @admin_permission.require() def protected(): return 'protected' if __name__ == '__main__': app.run() -
chris-allan created this gist
Jul 1, 2014 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,62 @@ from flask import Flask from flask.ext.mongoengine import MongoEngine, MongoEngineSessionInterface from flask.ext.security import Security, MongoEngineUserDatastore, \ UserMixin, RoleMixin, login_required from flask.ext.principal import Principal # Create app app = Flask(__name__) app.config['DEBUG'] = True app.config['SECRET_KEY'] = 'super-secret' # Load the Flask-Principal extension principals = Principal(app) # MongoDB Config app.config["MONGODB_HOST"] = "mongodb://localhost:27017/flask_security" app.config["MONGODB_DB"] = True # Create database connection object db = MongoEngine(app) # Use MongoDB to store sessions app.session_interface = MongoEngineSessionInterface(db) class Role(db.Document, RoleMixin): name = db.StringField(max_length=80, unique=True) description = db.StringField(max_length=255) class User(db.Document, UserMixin): email = db.StringField(max_length=255) password = db.StringField(max_length=255) active = db.BooleanField(default=True) confirmed_at = db.DateTimeField() roles = db.ListField(db.ReferenceField(Role), default=[]) # Setup Flask-Security user_datastore = MongoEngineUserDatastore(db, User, Role) security = Security(app, user_datastore) # Create a user to test with @app.before_first_request def create_user(): test_role = user_datastore.find_or_create_role('test') user_datastore.create_user( email='[email protected]', password='abc123', roles=[test_role] ) # Views @app.route('/') @login_required def home(): return 'private' if __name__ == '__main__': app.run()