11use std:: sync:: Arc ;
22
33use async_graphql:: * ;
4- use intercode_entities:: { staff_positions, user_con_profiles, users} ;
4+ use intercode_entities:: { oauth_applications , staff_positions, user_con_profiles, users} ;
55use intercode_graphql_core:: { lax_id:: LaxId , query_data:: QueryData } ;
66use intercode_graphql_loaders:: LoaderManager ;
77use intercode_policies:: {
@@ -11,7 +11,7 @@ use intercode_policies::{
1111} ;
1212use seawater:: loaders:: ExpectModel ;
1313
14- use crate :: policies:: { StaffPositionPolicy , UserAction , UserPolicy } ;
14+ use crate :: policies:: { OAuthApplicationPolicy , StaffPositionPolicy , UserAction , UserPolicy } ;
1515
1616pub struct AbilityUsersFields {
1717 authorization_info : Arc < AuthorizationInfo > ,
@@ -54,9 +54,16 @@ impl AbilityUsersFields {
5454#[ Object ]
5555impl AbilityUsersFields {
5656 #[ graphql( name = "can_manage_oauth_applications" ) ]
57- async fn can_manage_oauth_applications ( & self ) -> bool {
58- // TODO
59- false
57+ async fn can_manage_oauth_applications ( & self ) -> Result < bool > {
58+ let authorization_info = self . authorization_info . as_ref ( ) ;
59+ Ok (
60+ OAuthApplicationPolicy :: action_permitted (
61+ authorization_info,
62+ & ReadManageAction :: Manage ,
63+ & oauth_applications:: Model :: default ( ) ,
64+ )
65+ . await ?,
66+ )
6067 }
6168
6269 #[ graphql( name = "can_manage_staff_positions" ) ]
0 commit comments