Inactive User
+ ++ Your user account is inactive. If you believe this is in error, please reach out in our + + Discord + + for support. +
+ +diff --git a/modules/odr_core/odr_core/models/user.py b/modules/odr_core/odr_core/models/user.py
index fe9e458..e52c0bc 100644
--- a/modules/odr_core/odr_core/models/user.py
+++ b/modules/odr_core/odr_core/models/user.py
@@ -25,9 +25,9 @@ class User(Base):
image = Column(String)
identity_provider = Column(String, index=True, default="omi")
hashed_password = Column(String)
- is_active = Column(Boolean, default=True)
- is_superuser = Column(Boolean, default=False)
- dco_accepted = Column(Boolean, default=False)
+ is_active = Column(Boolean, nullable=False, default=True)
+ is_superuser = Column(Boolean, nullable=False, default=False)
+ dco_accepted = Column(Boolean, nullable=False, default=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(
DateTime(timezone=True), server_default=func.now(), onupdate=func.now()
diff --git a/modules/odr_datamodel/alembic/versions/e06f931c3c84_update_users_table_to_have_non_nullable_.py b/modules/odr_datamodel/alembic/versions/e06f931c3c84_update_users_table_to_have_non_nullable_.py
new file mode 100644
index 0000000..88b0e83
--- /dev/null
+++ b/modules/odr_datamodel/alembic/versions/e06f931c3c84_update_users_table_to_have_non_nullable_.py
@@ -0,0 +1,52 @@
+"""'Update users table to have non nullable and default values for flags'
+
+Revision ID: e06f931c3c84
+Revises: 6917b71d9140
+Create Date: 2024-10-03 18:14:20.255813
+
+"""
+from typing import Sequence, Union
+
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision: str = 'e06f931c3c84'
+down_revision: Union[str, None] = '6917b71d9140'
+branch_labels: Union[str, Sequence[str], None] = None
+depends_on: Union[str, Sequence[str], None] = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.alter_column('users', 'is_active',
+ existing_type=sa.BOOLEAN(),
+ nullable=False,
+ server_default=sa.text('true'))
+ op.alter_column('users', 'is_superuser',
+ existing_type=sa.BOOLEAN(),
+ nullable=False,
+ server_default=sa.text('false'))
+ op.alter_column('users', 'dco_accepted',
+ existing_type=sa.BOOLEAN(),
+ nullable=False,
+ server_default=sa.text('false'))
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.alter_column('users', 'dco_accepted',
+ existing_type=sa.BOOLEAN(),
+ nullable=True,
+ server_default=sa.text('false'))
+ op.alter_column('users', 'is_superuser',
+ existing_type=sa.BOOLEAN(),
+ nullable=True,
+ server_default=sa.text('false'))
+ op.alter_column('users', 'is_active',
+ existing_type=sa.BOOLEAN(),
+ nullable=True,
+ server_default=sa.text('true'))
+ # ### end Alembic commands ###
diff --git a/modules/odr_frontend/src/hooks.server.ts b/modules/odr_frontend/src/hooks.server.ts
index 7f12da6..e35a09b 100644
--- a/modules/odr_frontend/src/hooks.server.ts
+++ b/modules/odr_frontend/src/hooks.server.ts
@@ -11,6 +11,8 @@ const authorizationHandle:Handle = async ({ event, resolve }) => {
throw redirect(303, '/auth');
} else if (!session.user) {
throw redirect(303, '/auth');
+ } else if (!event.url.pathname.startsWith('/inactive') && (!session.user.is_active)) {
+ throw redirect(303, '/inactive');
} else if (!event.url.pathname.startsWith('/dco') && (!session.user.dco_accepted)) {
throw redirect(303, '/dco');
} else if (event.url.pathname.startsWith('/admin') && (!session.user.is_superuser)) {
diff --git a/modules/odr_frontend/src/lib/admin/ActiveToggle.svelte b/modules/odr_frontend/src/lib/admin/ActiveToggle.svelte
new file mode 100644
index 0000000..4084a00
--- /dev/null
+++ b/modules/odr_frontend/src/lib/admin/ActiveToggle.svelte
@@ -0,0 +1,14 @@
+
+
+
+ Your user account is inactive. If you believe this is in error, please reach out in our + + Discord + + for support. +
+ +