Exemple #1
0
    email = db.Column(db.String(255), nullable=False)
    # save the user of the invitee
    invited_by_user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    # token used for registration page to identify user registering
    token = db.Column(db.String(100), nullable=False, server_default='')

def password_validator(form, field):
    if len(field.data) < 8:
        raise wtforms.validators.ValidationError('Password must have at least 8 characters')

# Setup Flask-User. Creating the UserManager will register all kinds of stuff,
# such as routes for login, register, etc.
db_adapter = flask_user.SQLAlchemyAdapter(database.sqla, User, UserInvitationClass=UserInvitation)
user_manager = flask_user.UserManager(
                app=app,
                db_adapter=db_adapter,
                password_validator=password_validator,
)

@app.cli.command('invite')
@click.argument('email')
def initdb_command(email):
    """Invite a user to this project."""
    user_invite = db_adapter.add_object(
                db_adapter.UserInvitationClass,
                    email = email,
                    invited_by_user_id = -1,
                )
    db_adapter.commit()
    user_invite.token = user_manager.generate_token(user_invite.id)
    db_adapter.commit()
Exemple #2
0
import login
import main
import info
import static
import textflow
import comparison
import editor
import set_cover
import checks

dba = flask_sqlalchemy.SQLAlchemy()
user, _role, _roles_users = login.declare_user_model_on(dba)
db_adapter = flask_user.SQLAlchemyAdapter(dba, user)
login_manager = flask_login.LoginManager()
login_manager.anonymous_user = login.AnonymousUserMixin
user_manager = flask_user.UserManager(db_adapter)
mail = flask_mail.Mail()


class Config():
    """ Default configuration object. """

    APPLICATION_HOST = 'localhost'
    APPLICATION_PORT = 5000
    APPLICATION_DESCRIPTION = ''
    CONFIG_FILE = '_global.conf'  # default = ./instance/_global.conf
    STATIC_FOLDER = 'static'
    STATIC_URL_PATH = 'static'
    AFTER_LOGIN_URL = None
    USE_RELOADER = False
    USE_DEBUGGER = False
Exemple #3
0
    app.logger.addHandler(logging.StreamHandler())
    app.logger.setLevel(logging.INFO)

# We have to import these after defining app, api and db as these
# imports will be looking for those variables.
import backend.common.auth as auth
import backend.common.response as response
import backend.missions.views as mission_views
import backend.organizations.views as organization_views
import backend.quests.views as quest_views
import backend.questions.views as question_views
import backend.users.models as user_models
import backend.users.views as user_views

db_adapter = flask_user.SQLAlchemyAdapter(db, user_models.User)
flask_user.UserManager(db_adapter, app)


@app.route('/')
def index():
    """Return the index page."""
    return app.send_static_file('index.html')


@app.route('/app')
@flask_user.login_required
@response.no_cache
def app_page():
    """Return the javascript for the app."""
    return app.send_static_file('app.html')
Exemple #4
0
def authenticate(username, password):
    user = user_manager.find_user_by_username(username)
    if user and user_manager.verify_password(password, user):
        return user


def identity(payload):
    user = get_user(payload['identity'])
    return user


jwt = JWT(app, authenticate, identity)
login_manager = flask_login.LoginManager()
db_adapter = flask_user.SQLAlchemyAdapter(db, User)
user_manager = flask_user.UserManager(db_adapter,
                                      app,
                                      login_manager=login_manager)


@login_manager.request_loader
def load_user_from_request(request):
    """This function is called by login manager to get user info from
    the request (JWT authorization) when there is no info in the
    session.

    The trick here is that we don't want it to error when there is no
    JWT token, as otherwise the user can never access registration
    page.
    """
    @jwt_required()
    def get_user():