2020-03-14 22:17:50 +00:00
|
|
|
# Python imports
|
2020-10-30 23:25:34 +00:00
|
|
|
import os, secrets
|
|
|
|
from datetime import timedelta
|
2020-03-14 22:17:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
# Lib imports
|
2019-12-22 19:09:36 +00:00
|
|
|
from flask import Flask
|
2020-10-30 23:25:34 +00:00
|
|
|
#OIDC Login path
|
|
|
|
from flask_oidc import OpenIDConnect
|
|
|
|
# Flask Login Path
|
2020-03-14 08:43:04 +00:00
|
|
|
from flask_bcrypt import Bcrypt
|
|
|
|
from flask_login import current_user, login_user, logout_user, LoginManager
|
2019-12-22 19:09:36 +00:00
|
|
|
|
2020-03-14 22:17:50 +00:00
|
|
|
|
|
|
|
# Apoplication imports
|
|
|
|
|
|
|
|
|
2019-12-22 19:09:36 +00:00
|
|
|
|
2020-10-30 23:25:34 +00:00
|
|
|
# Configs and 'init'
|
|
|
|
ROOT_FILE_PTH = os.path.dirname(os.path.realpath(__file__))
|
|
|
|
# This path is submitted as the redirect URI in certain code flows.
|
|
|
|
# Change localhost%3A6969 to different port accordingly or change to your domain.
|
|
|
|
REDIRECT_LINK = "http%3A%2F%2Flocalhost%3A6969%2F"
|
2019-12-22 19:09:36 +00:00
|
|
|
|
2020-10-30 23:25:34 +00:00
|
|
|
app = Flask(__name__)
|
|
|
|
app.config.update({
|
|
|
|
"TITLE": ':::APP TITLE:::',
|
|
|
|
'DEBUG': False,
|
|
|
|
'LOGIN_PATH': "FLASK_LOGIN", # Value can be OIDC or FLASK_LOGIN
|
|
|
|
'SECRET_KEY': secrets.token_hex(32), # For csrf and some other stuff...
|
|
|
|
'PERMANENT_SESSION_LIFETIME': timedelta(days = 7).total_seconds(),
|
|
|
|
'SQLALCHEMY_DATABASE_URI': "sqlite:///static/db/database.db",
|
|
|
|
'SQLALCHEMY_TRACK_MODIFICATIONS': False,
|
|
|
|
'APP_REDIRECT_URI': REDIRECT_LINK,
|
|
|
|
'OIDC_CLIENT_SECRETS': ROOT_FILE_PTH + '/client_secrets.json',
|
|
|
|
'OIDC_ID_TOKEN_COOKIE_SECURE': True, # Only set false in development setups...
|
|
|
|
'OIDC_REQUIRE_VERIFIED_EMAIL': False,
|
|
|
|
'OIDC_USER_INFO_ENABLED': True,
|
|
|
|
'OIDC_VALID_ISSUERS': [
|
|
|
|
'http://localhost:8080/auth/realms/apps',
|
|
|
|
'https://localhost:443/auth/realms/apps'
|
|
|
|
],
|
|
|
|
'OIDC_TOKEN_TYPE_HINT': 'access_token'
|
|
|
|
})
|
|
|
|
|
|
|
|
oidc = OpenIDConnect(app)
|
2020-03-14 08:43:04 +00:00
|
|
|
login_manager = LoginManager(app)
|
|
|
|
bcrypt = Bcrypt(app)
|
|
|
|
|
2020-10-30 23:25:34 +00:00
|
|
|
|
2020-10-31 01:32:26 +00:00
|
|
|
def oidc_loggedin():
|
|
|
|
return oidc.user_loggedin
|
|
|
|
app.jinja_env.globals['oidc_loggedin'] = oidc_loggedin
|
|
|
|
app.jinja_env.globals['TITLE'] = ':::APP TITLE:::'
|
|
|
|
|
|
|
|
|
2020-03-14 08:43:04 +00:00
|
|
|
from core.models import db, User
|
2020-10-30 23:25:34 +00:00
|
|
|
with app.app_context():
|
|
|
|
db.create_all()
|
|
|
|
|
2020-03-14 04:55:07 +00:00
|
|
|
from core.forms import RegisterForm, LoginForm
|
2020-03-06 07:27:02 +00:00
|
|
|
from core import routes
|