@@ -31,7 +31,7 @@ use rustls::{Certificate, PrivateKey, ServerConfig};
3131use rustls_pemfile:: { certs, pkcs8_private_keys} ;
3232
3333use crate :: option:: CONFIG ;
34- use crate :: rbac:: get_user_map ;
34+ use crate :: rbac:: user_map ;
3535
3636mod health_check;
3737mod ingest;
@@ -62,14 +62,14 @@ macro_rules! create_app {
6262 } ;
6363}
6464
65- async fn validator (
65+ async fn authenticate (
6666 req : ServiceRequest ,
6767 credentials : BasicAuth ,
6868) -> Result < ServiceRequest , ( actix_web:: Error , ServiceRequest ) > {
6969 let username = credentials. user_id ( ) . trim ( ) ;
7070 let password = credentials. password ( ) . unwrap ( ) . trim ( ) ;
7171
72- if let Some ( user) = get_user_map ( ) . read ( ) . unwrap ( ) . get ( username) {
72+ if let Some ( user) = user_map ( ) . read ( ) . unwrap ( ) . get ( username) {
7373 if user. verify ( password) {
7474 return Ok ( req) ;
7575 }
@@ -130,6 +130,7 @@ pub async fn run_http(prometheus: PrometheusMetrics) -> anyhow::Result<()> {
130130pub fn configure_routes ( cfg : & mut web:: ServiceConfig ) {
131131 let generated = generate ( ) ;
132132
133+ //log stream API
133134 let logstream_api = web:: scope ( "/{logstream}" )
134135 . service (
135136 web:: resource ( "" )
@@ -163,14 +164,19 @@ pub fn configure_routes(cfg: &mut web::ServiceConfig) {
163164 // GET "/logstream/{logstream}/retention" ==> Get retention for given logstream
164165 . route ( web:: get ( ) . to ( logstream:: get_retention) ) ,
165166 ) ;
167+
168+ // User API
166169 let user_api = web:: scope ( "/user" ) . service (
167170 web:: resource ( "/{username}" )
168171 // POST /user/{username} => Create a new user
169172 . route ( web:: put ( ) . to ( rbac:: put_user) )
170173 // DELETE /user/{username} => Delete a user
171174 . route ( web:: delete ( ) . to ( rbac:: delete_user) )
172175 . wrap_fn ( |req, srv| {
173- // deny request if username is same as username from config
176+ // The credentials set in the env vars (P_USERNAME & P_PASSWORD) are treated
177+ // as root credentials. Any other user is not allowed to modify or delete
178+ // the root user. Deny request if username is same as username
179+ // from env variable P_USERNAME.
174180 let username = req. match_info ( ) . get ( "username" ) . unwrap_or ( "" ) ;
175181 let is_root = username == CONFIG . parseable . username ;
176182 let call = srv. call ( req) ;
@@ -210,7 +216,7 @@ pub fn configure_routes(cfg: &mut web::ServiceConfig) {
210216 ) ,
211217 )
212218 . service ( user_api)
213- . wrap ( HttpAuthentication :: basic ( validator ) ) ,
219+ . wrap ( HttpAuthentication :: basic ( authenticate ) ) ,
214220 )
215221 // GET "/" ==> Serve the static frontend directory
216222 . service ( ResourceFiles :: new ( "/" , generated) ) ;
0 commit comments