@@ -29,7 +29,7 @@ use crate::handlers::http::rbac::RBACError;
29
29
use crate :: parseable:: PARSEABLE ;
30
30
use crate :: query:: { TableScanVisitor , QUERY_SESSION } ;
31
31
use crate :: rbac:: map:: SessionKey ;
32
- use crate :: rbac:: role:: { Action , Permission } ;
32
+ use crate :: rbac:: role:: { Action , ParseableResourceType , Permission } ;
33
33
use crate :: rbac:: Users ;
34
34
use actix:: extract_session_key_from_req;
35
35
use actix_web:: HttpRequest ;
@@ -114,22 +114,31 @@ pub fn user_auth_for_datasets(
114
114
authorized = true ;
115
115
break ;
116
116
}
117
- Permission :: Resource (
118
- Action :: Query ,
119
- crate :: rbac:: role:: ParseableResourceType :: Stream ( stream) ,
120
- ) => {
121
- let is_internal = PARSEABLE
122
- . get_stream ( & table_name)
123
- . is_ok_and ( |stream|stream. get_stream_type ( ) . eq ( & crate :: storage:: StreamType :: Internal ) ) ;
124
-
125
- if stream == table_name
126
- || stream == "*"
127
- || is_internal
128
- {
117
+ Permission :: Resource ( Action :: Query , ParseableResourceType :: Stream ( stream) ) => {
118
+ let is_internal = PARSEABLE . get_stream ( table_name) . is_ok_and ( |stream| {
119
+ stream
120
+ . get_stream_type ( )
121
+ . eq ( & crate :: storage:: StreamType :: Internal )
122
+ } ) ;
123
+
124
+ if stream == table_name || stream == "*" || is_internal {
129
125
authorized = true ;
130
126
}
131
127
}
132
- Permission :: Resource ( _, crate :: rbac:: role:: ParseableResourceType :: All ) => {
128
+ Permission :: Resource ( action, ParseableResourceType :: All )
129
+ if ![
130
+ Action :: All ,
131
+ Action :: PutUser ,
132
+ Action :: PutRole ,
133
+ Action :: DeleteUser ,
134
+ Action :: DeleteRole ,
135
+ Action :: ModifyUserGroup ,
136
+ Action :: CreateUserGroup ,
137
+ Action :: DeleteUserGroup ,
138
+ Action :: DeleteNode ,
139
+ ]
140
+ . contains ( action) =>
141
+ {
133
142
authorized = true ;
134
143
}
135
144
_ => ( ) ,
0 commit comments