mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
A user authentication module based on flask-security is added, which allows users to login and change/recover passwords etc. Custom templates are included for the user/password UIs. A new setup script will initialise the user (and later settings) DB, adding the first user and granting them an Administrator role. A redirects blueprint module is added to handle simple URL redirects. A browser module is added and currently renders a skeleton page with a menu bar, gravatar and jumbotron. NOTE FOR LATER: Currently this code might make the nice basis for any web app that needs user management and plugins. Hmmm....
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
##########################################################################
|
|
#
|
|
# pgAdmin 4 - PostgreSQL Tools
|
|
#
|
|
# Copyright (C) 2013 - 2014, The pgAdmin Development Team
|
|
# This software is released under the PostgreSQL Licence
|
|
#
|
|
##########################################################################
|
|
|
|
"""Defines the models for the configuration database."""
|
|
|
|
from flask.ext.sqlalchemy import SQLAlchemy
|
|
from flask.ext.security import UserMixin, RoleMixin
|
|
|
|
db = SQLAlchemy()
|
|
|
|
# Define models
|
|
roles_users = db.Table('roles_users',
|
|
db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
|
|
db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))
|
|
|
|
class Role(db.Model, RoleMixin):
|
|
"""Define a security role"""
|
|
id = db.Column(db.Integer(), primary_key=True)
|
|
name = db.Column(db.String(80), unique=True)
|
|
description = db.Column(db.String(255))
|
|
|
|
class User(db.Model, UserMixin):
|
|
"""Define a user object"""
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
email = db.Column(db.String(255), unique=True)
|
|
password = db.Column(db.String(255))
|
|
active = db.Column(db.Boolean())
|
|
active = db.Column(db.Boolean())
|
|
confirmed_at = db.Column(db.DateTime())
|
|
roles = db.relationship('Role', secondary=roles_users,
|
|
backref=db.backref('users', lazy='dynamic'))
|