Skip to main content

Crate reinhardt_auth

Crate reinhardt_auth 

Source
Expand description

§Reinhardt Auth

Authentication and authorization system for Reinhardt framework.

§Features

  • DjangoModelPermissions: Django-style model permissions with app_label.action_model format
  • DjangoModelPermissionsOrAnonReadOnly: Anonymous read access for unauthenticated users
  • Object-Level Permissions: Fine-grained access control on individual objects
  • User Management: CRUD operations for users with password hashing
  • Group Management: User groups and permission assignment
  • REST API Authentication: Multiple authentication backends (JWT, Token, Session, OAuth2)
  • Standard Permissions: Permission classes for common authorization scenarios
  • createsuperuser Command: CLI tool for creating admin users

§Security Note: Client-Side vs Server-Side Checks

Authentication state exposed via reinhardt_http::AuthState (e.g., is_authenticated(), is_admin()) is populated by server-side middleware and stored in request extensions. When this state is forwarded to client-side code (e.g., via WASM or JSON responses), it must only be used for UI display purposes (showing/hiding elements). All authorization decisions must be enforced server-side through middleware and permission classes provided by this crate.

Re-exports§

pub use current_user::CurrentUser;
pub use core::AllowAny;
pub use core::AnonymousUser;
pub use core::AuthBackend;
pub use core::BaseUser;
pub use core::CompositeAuthBackend;
pub use core::FullUser;
pub use core::IsActiveUser;
pub use core::IsAdminUser;
pub use core::IsAuthenticated;
pub use core::IsAuthenticatedOrReadOnly;
pub use core::PasswordHasher;
pub use core::Permission;
pub use core::PermissionContext;
pub use core::PermissionsMixin;
pub use core::SimpleUser;
pub use core::User;
pub use core::permission_operators;
pub use advanced_permissions::ObjectPermission as AdvancedObjectPermission;
pub use advanced_permissions::RoleBasedPermission;
pub use base_user_manager::BaseUserManager;
pub use basic::BasicAuthentication as HttpBasicAuth;
pub use group_management::CreateGroupData;
pub use group_management::Group;
pub use group_management::GroupManagementError;
pub use group_management::GroupManagementResult;
pub use group_management::GroupManager;
pub use ip_permission::CidrRange;
pub use ip_permission::IpBlacklistPermission;
pub use ip_permission::IpWhitelistPermission;
pub use mfa::MFAAuthentication as MfaManager;
pub use model_permissions::DjangoModelPermissions;
pub use model_permissions::DjangoModelPermissionsOrAnonReadOnly;
pub use model_permissions::ModelPermission;
pub use object_permissions::ObjectPermission;
pub use object_permissions::ObjectPermissionChecker;
pub use object_permissions::ObjectPermissionManager;
pub use permission_operators::AndPermission;
pub use permission_operators::NotPermission;
pub use permission_operators::OrPermission;
pub use remote_user::RemoteUserAuthentication as RemoteUserAuth;
pub use rest_authentication::BasicAuthConfig;
pub use rest_authentication::CompositeAuthentication;
pub use rest_authentication::RemoteUserAuthentication;
pub use rest_authentication::RestAuthentication;
pub use rest_authentication::SessionAuthConfig;
pub use rest_authentication::SessionAuthentication;
pub use rest_authentication::TokenAuthConfig;
pub use rest_authentication::TokenAuthentication;
pub use time_based_permission::DateRange;
pub use time_based_permission::TimeBasedPermission;
pub use time_based_permission::TimeWindow;
pub use user_management::CreateUserData;
pub use user_management::UpdateUserData;
pub use user_management::UserManagementError;
pub use user_management::UserManagementResult;
pub use user_management::UserManager;

Modules§

advanced_permissions
Advanced Permission System
base_user_manager
basic
HTTP Basic Authentication
core
reinhardt-core-auth
current_user
CurrentUser Injectable for dependency injection
default_user
default_user_manager
group_management
Group Management
ip_permission
IP-based access control permissions
mfa
Multi-Factor Authentication (MFA)
model_permissions
Model-based Permissions
object_permissions
Object-Level Permissions
remote_user
Remote User Authentication
rest_authentication
REST API Authentication
sessions
Reinhardt Sessions
time_based_permission
Time-based access control permissions
user_management
User Management

Enums§

AuthenticationError
Authentication errors

Traits§

AuthenticationBackend
Authentication backend trait