Skip to content

Commit 2a3bd23

Browse files
committed
Merge #624: #615 Use Casbin for the authorization layer
389acc4 chore(deps): update dependencies (Mario) 6e1877c refactor: [#615] new get role method, new user role enum and minor refactoring (Mario) 3671c78 refactor: [#615] explicit Casbin imports and policy now defined as string (Mario) 22b0e67 refactor: [#615] delete unused Casbin folder (Mario) 463c533 refactor: [#615] new panic messages and minor refactorings (Mario) 7104b61 feat: [#615] policy is now loaded from code and minor refactors (Mario) f24afaf refactor: [#165] removed unused model file (Mario) 344857e refactor: [#615] model is now read from string instead of file and code cleanup (Mario) 5dc9dca refactor: [#615] more human readable policy file (Mario) e13f579 feat: [#615] authorization service implemented for ban user handler (Mario) ba0ad37 refactor: [#615] code cleanup and improved comments (Mario) 58a33e7 feat: [#615] added authorization for delete torrent action (Mario) e00b0f6 feat: [#615] added Casbin enforcer to app state (Mario) 7a39d0b refactor: [#615] policy file allows admin user to perform any action (Mario) d9ea173 feat: [#615] initial casbin configuration (Mario) 9895346 feat: [#615] casbin package added (Mario) Pull request description: Resolves #615 ACKs for top commit: josecelano: ACK 389acc4 Tree-SHA512: f090f99621489d9150aa9f0775907959fa0f93d5bee0b382ad02f1622c2f1ae5db527639a9a0d78be5fc8bf7cfd06059b88287d0f799b79ae929052fd2d45a4c
2 parents f5ee7f5 + 389acc4 commit 2a3bd23

File tree

6 files changed

+330
-176
lines changed

6 files changed

+330
-176
lines changed

Cargo.lock

Lines changed: 173 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ url = { version = "2.5.0", features = ["serde"] }
9797
urlencoding = "2"
9898
uuid = { version = "1", features = ["v4"] }
9999
tracing-subscriber = { version = "0.3.18", features = ["json"] }
100+
casbin = "2.2.0"
100101

101102
[dev-dependencies]
102103
tempfile = "3"

src/app.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,10 @@ pub async fn run(configuration: Configuration, api_version: &Version) -> Running
8787
let torrent_tag_repository = Arc::new(DbTorrentTagRepository::new(database.clone()));
8888
let torrent_listing_generator = Arc::new(DbTorrentListingGenerator::new(database.clone()));
8989
let banned_user_list = Arc::new(DbBannedUserList::new(database.clone()));
90+
let casbin_enforcer = Arc::new(authorization::CasbinEnforcer::new().await);
9091

9192
// Services
92-
let authorization_service = Arc::new(authorization::Service::new(user_repository.clone()));
93+
let authorization_service = Arc::new(authorization::Service::new(user_repository.clone(), casbin_enforcer.clone()));
9394
let tracker_service = Arc::new(tracker::service::Service::new(configuration.clone(), database.clone()).await);
9495
let tracker_statistics_importer =
9596
Arc::new(StatisticsImporter::new(configuration.clone(), tracker_service.clone(), database.clone()).await);
@@ -115,6 +116,7 @@ pub async fn run(configuration: Configuration, api_version: &Version) -> Running
115116
torrent_announce_url_repository.clone(),
116117
torrent_tag_repository.clone(),
117118
torrent_listing_generator.clone(),
119+
authorization_service.clone(),
118120
));
119121
let registration_service = Arc::new(user::RegistrationService::new(
120122
configuration.clone(),
@@ -127,9 +129,9 @@ pub async fn run(configuration: Configuration, api_version: &Version) -> Running
127129
user_authentication_repository.clone(),
128130
));
129131
let ban_service = Arc::new(user::BanService::new(
130-
user_repository.clone(),
131132
user_profile_repository.clone(),
132133
banned_user_list.clone(),
134+
authorization_service.clone(),
133135
));
134136
let authentication_service = Arc::new(Service::new(
135137
configuration.clone(),

0 commit comments

Comments
 (0)