forked from Github-Mirrors/canaille
Moved user and group management in the core submodule
This commit is contained in:
parent
ac64f034f3
commit
08f8bfbfdb
36 changed files with 69 additions and 70 deletions
|
@ -115,16 +115,16 @@ def setup_themer(app):
|
|||
|
||||
|
||||
def setup_blueprints(app):
|
||||
import canaille.account
|
||||
import canaille.admin
|
||||
import canaille.groups
|
||||
import canaille.core.account
|
||||
import canaille.core.admin
|
||||
import canaille.core.groups
|
||||
import canaille.oidc.blueprints
|
||||
|
||||
app.url_map.strict_slashes = False
|
||||
|
||||
app.register_blueprint(canaille.account.bp)
|
||||
app.register_blueprint(canaille.admin.bp)
|
||||
app.register_blueprint(canaille.groups.bp)
|
||||
app.register_blueprint(canaille.core.account.bp)
|
||||
app.register_blueprint(canaille.core.admin.bp)
|
||||
app.register_blueprint(canaille.core.groups.bp)
|
||||
app.register_blueprint(canaille.oidc.blueprints.bp)
|
||||
|
||||
|
||||
|
@ -174,7 +174,7 @@ def create_app(config=None, validate=True):
|
|||
try:
|
||||
from .oidc.oauth import setup_oauth
|
||||
from .ldap_backend.backend import init_backend
|
||||
from .i18n import setup_i18n
|
||||
from .utils.i18n import setup_i18n
|
||||
|
||||
setup_logging(app)
|
||||
init_backend(app)
|
||||
|
|
|
@ -112,7 +112,7 @@ if HAS_FAKER: # pragma: no branch
|
|||
Populate the database with generated random users.
|
||||
"""
|
||||
|
||||
from canaille.populate import fake_users
|
||||
from canaille.core.populate import fake_users
|
||||
|
||||
fake_users(ctx.obj["number"])
|
||||
|
||||
|
@ -130,6 +130,6 @@ if HAS_FAKER: # pragma: no branch
|
|||
Populate the database with generated random groups.
|
||||
"""
|
||||
|
||||
from canaille.populate import fake_groups
|
||||
from canaille.core.populate import fake_groups
|
||||
|
||||
fake_groups(ctx.obj["number"], nb_users_max)
|
||||
|
|
0
canaille/core/__init__.py
Normal file
0
canaille/core/__init__.py
Normal file
|
@ -6,6 +6,18 @@ from typing import List
|
|||
|
||||
import pkg_resources
|
||||
import wtforms
|
||||
from canaille.utils import b64_to_obj
|
||||
from canaille.utils import default_fields
|
||||
from canaille.utils import login_placeholder
|
||||
from canaille.utils import obj_to_b64
|
||||
from canaille.utils import profile_hash
|
||||
from canaille.utils.flask import current_user
|
||||
from canaille.utils.flask import permissions_needed
|
||||
from canaille.utils.flask import render_htmx_template
|
||||
from canaille.utils.flask import request_is_htmx
|
||||
from canaille.utils.flask import smtp_needed
|
||||
from canaille.utils.flask import user_needed
|
||||
from canaille.utils.forms import TableForm
|
||||
from flask import abort
|
||||
from flask import Blueprint
|
||||
from flask import current_app
|
||||
|
@ -33,18 +45,6 @@ from .mails import send_password_initialization_mail
|
|||
from .mails import send_password_reset_mail
|
||||
from .models import Group
|
||||
from .models import User
|
||||
from .utils import b64_to_obj
|
||||
from .utils import default_fields
|
||||
from .utils import login_placeholder
|
||||
from .utils import obj_to_b64
|
||||
from .utils import profile_hash
|
||||
from .utils.flask import current_user
|
||||
from .utils.flask import permissions_needed
|
||||
from .utils.flask import render_htmx_template
|
||||
from .utils.flask import request_is_htmx
|
||||
from .utils.flask import smtp_needed
|
||||
from .utils.flask import user_needed
|
||||
from .utils.forms import TableForm
|
||||
|
||||
|
||||
bp = Blueprint("account", __name__)
|
|
@ -1,5 +1,5 @@
|
|||
from canaille.mails import profile_hash
|
||||
from canaille.mails import send_test_mail
|
||||
from canaille.core.mails import profile_hash
|
||||
from canaille.core.mails import send_test_mail
|
||||
from canaille.utils import obj_to_b64
|
||||
from canaille.utils.flask import permissions_needed
|
||||
from canaille.utils.forms import HTMXForm
|
|
@ -1,16 +1,16 @@
|
|||
import wtforms.form
|
||||
from canaille.utils.forms import HTMXBaseForm
|
||||
from canaille.utils.forms import HTMXForm
|
||||
from canaille.utils.forms import is_uri
|
||||
from canaille.utils.i18n import native_language_name_from_code
|
||||
from flask import current_app
|
||||
from flask import g
|
||||
from flask_babel import lazy_gettext as _
|
||||
from flask_wtf.file import FileAllowed
|
||||
from flask_wtf.file import FileField
|
||||
|
||||
from .i18n import native_language_name_from_code
|
||||
from .models import Group
|
||||
from .models import User
|
||||
from .utils.forms import HTMXBaseForm
|
||||
from .utils.forms import HTMXForm
|
||||
from .utils.forms import is_uri
|
||||
|
||||
|
||||
def unique_login(form, field):
|
|
@ -1,3 +1,6 @@
|
|||
from canaille.utils.flask import permissions_needed
|
||||
from canaille.utils.flask import render_htmx_template
|
||||
from canaille.utils.forms import TableForm
|
||||
from flask import abort
|
||||
from flask import Blueprint
|
||||
from flask import flash
|
||||
|
@ -11,9 +14,6 @@ from .forms import CreateGroupForm
|
|||
from .forms import EditGroupForm
|
||||
from .models import Group
|
||||
from .models import User
|
||||
from .utils.flask import permissions_needed
|
||||
from .utils.flask import render_htmx_template
|
||||
from .utils.forms import TableForm
|
||||
|
||||
bp = Blueprint("groups", __name__, url_prefix="/groups")
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
from canaille.utils import profile_hash
|
||||
from canaille.utils.mails import logo
|
||||
from canaille.utils.mails import send_email
|
||||
from flask import current_app
|
||||
|
@ -5,8 +6,6 @@ from flask import url_for
|
|||
from flask_babel import gettext as _
|
||||
from flask_themer import render_template
|
||||
|
||||
from .utils import profile_hash
|
||||
|
||||
|
||||
def send_test_mail(email):
|
||||
base_url = url_for("account.index", _external=True)
|
|
@ -1,9 +1,8 @@
|
|||
import ldap.filter
|
||||
from canaille.ldap_backend.ldapobject import LDAPObject
|
||||
from flask import current_app
|
||||
from flask import session
|
||||
|
||||
from .ldap_backend.ldapobject import LDAPObject
|
||||
|
||||
|
||||
class User(LDAPObject):
|
||||
DEFAULT_OBJECT_CLASS = "inetOrgPerson"
|
|
@ -2,9 +2,9 @@ import random
|
|||
|
||||
import faker
|
||||
import ldap
|
||||
from canaille.i18n import available_language_codes
|
||||
from canaille.models import Group
|
||||
from canaille.models import User
|
||||
from canaille.core.models import Group
|
||||
from canaille.core.models import User
|
||||
from canaille.utils.i18n import available_language_codes
|
||||
from faker.config import AVAILABLE_LOCALES
|
||||
|
||||
|
|
@ -11,8 +11,8 @@ from flask_babel import gettext as _
|
|||
|
||||
def setup_ldap_models(config):
|
||||
from .ldapobject import LDAPObject
|
||||
from ..models import Group
|
||||
from ..models import User
|
||||
from canaille.core.models import Group
|
||||
from canaille.core.models import User
|
||||
|
||||
LDAPObject.root_dn = config["LDAP"]["ROOT_DN"]
|
||||
|
||||
|
@ -112,7 +112,8 @@ def init_backend(app):
|
|||
|
||||
|
||||
def validate_configuration(config):
|
||||
from canaille.models import User, Group
|
||||
from canaille.core.models import Group
|
||||
from canaille.core.models import User
|
||||
|
||||
try:
|
||||
conn = ldap.initialize(config["LDAP"]["URI"])
|
||||
|
|
|
@ -6,6 +6,8 @@ from authlib.jose import JsonWebKey
|
|||
from authlib.jose import jwt
|
||||
from authlib.oauth2 import OAuth2Error
|
||||
from canaille import csrf
|
||||
from canaille.core.forms import FullLoginForm
|
||||
from canaille.core.models import User
|
||||
from flask import abort
|
||||
from flask import Blueprint
|
||||
from flask import current_app
|
||||
|
@ -19,8 +21,6 @@ from flask_babel import gettext as _
|
|||
from flask_themer import render_template
|
||||
from werkzeug.datastructures import CombinedMultiDict
|
||||
|
||||
from ..forms import FullLoginForm
|
||||
from ..models import User
|
||||
from ..utils.flask import current_user
|
||||
from ..utils.flask import set_parameter_in_url_query
|
||||
from .forms import AuthorizeForm
|
||||
|
|
|
@ -26,11 +26,11 @@ from authlib.oidc.core.grants import OpenIDCode as _OpenIDCode
|
|||
from authlib.oidc.core.grants import OpenIDHybridGrant as _OpenIDHybridGrant
|
||||
from authlib.oidc.core.grants import OpenIDImplicitGrant as _OpenIDImplicitGrant
|
||||
from authlib.oidc.core.grants.util import generate_id_token
|
||||
from canaille.core.models import User
|
||||
from flask import current_app
|
||||
from flask import request
|
||||
from werkzeug.security import gen_salt
|
||||
|
||||
from ..models import User
|
||||
from .models import AuthorizationCode
|
||||
from .models import Client
|
||||
from .models import Token
|
||||
|
|
|
@ -3,7 +3,7 @@ import hashlib
|
|||
import json
|
||||
import re
|
||||
|
||||
from canaille.models import User
|
||||
from canaille.core.models import User
|
||||
from flask import current_app
|
||||
from flask import request
|
||||
from flask_babel import gettext as _
|
||||
|
|
|
@ -3,7 +3,7 @@ from functools import wraps
|
|||
from urllib.parse import urlsplit
|
||||
from urllib.parse import urlunsplit
|
||||
|
||||
from canaille.models import User
|
||||
from canaille.core.models import User
|
||||
from flask import abort
|
||||
from flask import current_app
|
||||
from flask import render_template
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import math
|
||||
|
||||
import wtforms
|
||||
from canaille.i18n import DEFAULT_LANGUAGE_CODE
|
||||
from canaille.i18n import locale_selector
|
||||
from canaille.utils.i18n import DEFAULT_LANGUAGE_CODE
|
||||
from canaille.utils.i18n import locale_selector
|
||||
from flask import abort
|
||||
from flask import current_app
|
||||
from flask import make_response
|
||||
|
|
|
@ -27,7 +27,7 @@ def setup_i18n(app):
|
|||
|
||||
|
||||
def locale_selector():
|
||||
from .utils.flask import current_user
|
||||
from .flask import current_user
|
||||
|
||||
user = current_user()
|
||||
available_language_codes = getattr(g, "available_language_codes", [])
|
|
@ -1,7 +1,7 @@
|
|||
from canaille.commands import cli
|
||||
from canaille.models import Group
|
||||
from canaille.models import User
|
||||
from canaille.populate import fake_users
|
||||
from canaille.core.models import Group
|
||||
from canaille.core.models import User
|
||||
from canaille.core.populate import fake_users
|
||||
|
||||
|
||||
def test_populate_users(testclient, slapd_connection):
|
||||
|
|
|
@ -2,9 +2,9 @@ import ldap.ldapobject
|
|||
import pytest
|
||||
import slapd
|
||||
from canaille import create_app
|
||||
from canaille.core.models import Group
|
||||
from canaille.core.models import User
|
||||
from canaille.ldap_backend.backend import setup_ldap_models
|
||||
from canaille.models import Group
|
||||
from canaille.models import User
|
||||
from canaille.oidc.installation import setup_ldap_tree
|
||||
from flask import g
|
||||
from flask_webtest import TestApp
|
||||
|
|
0
tests/core/__init__.py
Normal file
0
tests/core/__init__.py
Normal file
|
@ -1,6 +1,6 @@
|
|||
from unittest import mock
|
||||
|
||||
from canaille.models import User
|
||||
from canaille.core.models import User
|
||||
|
||||
|
||||
def test_index(testclient, user):
|
|
@ -1,7 +1,7 @@
|
|||
from canaille.models import Group
|
||||
from canaille.models import User
|
||||
from canaille.populate import fake_groups
|
||||
from canaille.populate import fake_users
|
||||
from canaille.core.models import Group
|
||||
from canaille.core.models import User
|
||||
from canaille.core.populate import fake_groups
|
||||
from canaille.core.populate import fake_users
|
||||
|
||||
|
||||
def test_no_group(app, slapd_connection):
|
|
@ -1,7 +1,7 @@
|
|||
import datetime
|
||||
|
||||
from canaille.account import Invitation
|
||||
from canaille.models import User
|
||||
from canaille.core.account import Invitation
|
||||
from canaille.core.models import User
|
||||
|
||||
|
||||
def test_invitation(testclient, logged_admin, foo_group, smtpd):
|
|
@ -1,4 +1,4 @@
|
|||
from canaille.account import profile_hash
|
||||
from canaille.core.account import profile_hash
|
||||
|
||||
|
||||
def test_password_reset(testclient, user):
|
|
@ -1,4 +1,4 @@
|
|||
from canaille.models import User
|
||||
from canaille.core.models import User
|
||||
|
||||
|
||||
def test_user_creation_edition_and_deletion(
|
|
@ -1,4 +1,4 @@
|
|||
from canaille.populate import fake_users
|
||||
from canaille.core.populate import fake_users
|
||||
from webtest import Upload
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import datetime
|
||||
|
||||
from canaille.models import User
|
||||
from canaille.core.models import User
|
||||
from webtest import Upload
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
from unittest import mock
|
||||
|
||||
from canaille.models import User
|
||||
from canaille.core.models import User
|
||||
|
||||
|
||||
def test_edition(
|
|
@ -1,14 +1,14 @@
|
|||
import datetime
|
||||
|
||||
import ldap.dn
|
||||
from canaille.core.models import Group
|
||||
from canaille.core.models import User
|
||||
from canaille.ldap_backend.backend import setup_ldap_models
|
||||
from canaille.ldap_backend.ldapobject import LDAPObject
|
||||
from canaille.ldap_backend.ldapobject import python_attrs_to_ldap
|
||||
from canaille.ldap_backend.utils import ldap_to_python
|
||||
from canaille.ldap_backend.utils import python_to_ldap
|
||||
from canaille.ldap_backend.utils import Syntax
|
||||
from canaille.models import Group
|
||||
from canaille.models import User
|
||||
|
||||
|
||||
def test_object_creation(slapd_connection):
|
||||
|
|
|
@ -5,7 +5,7 @@ from urllib.parse import urlsplit
|
|||
import freezegun
|
||||
from authlib.jose import jwt
|
||||
from authlib.oauth2.rfc7636 import create_s256_code_challenge
|
||||
from canaille.models import User
|
||||
from canaille.core.models import User
|
||||
from canaille.oidc.models import AuthorizationCode
|
||||
from canaille.oidc.models import Consent
|
||||
from canaille.oidc.models import Token
|
||||
|
|
|
@ -36,7 +36,7 @@ def test_ldap_connection_remote_ldap_wrong_credentials(testclient, configuration
|
|||
|
||||
|
||||
def test_ldap_cannot_create_users(testclient, configuration, slapd_connection):
|
||||
from canaille.models import User
|
||||
from canaille.core.models import User
|
||||
|
||||
def fake_init(*args, **kwarg):
|
||||
raise ldap.INSUFFICIENT_ACCESS
|
||||
|
@ -50,7 +50,7 @@ def test_ldap_cannot_create_users(testclient, configuration, slapd_connection):
|
|||
|
||||
|
||||
def test_ldap_cannot_create_groups(testclient, configuration, slapd_connection):
|
||||
from canaille.models import Group
|
||||
from canaille.core.models import Group
|
||||
|
||||
def fake_init(*args, **kwarg):
|
||||
raise ldap.INSUFFICIENT_ACCESS
|
||||
|
|
0
tests/utils/__init__.py
Normal file
0
tests/utils/__init__.py
Normal file
Loading…
Reference in a new issue