77from fastapi import APIRouter , Depends , HTTPException
88from pydantic import BaseModel , Field
99
10- from app .routers .auth import require_auth
10+ from app .routers .auth import require_auth , require_user_or_admin
1111from app .services import database
1212from app .services .grok_patterns import (
1313 list_builtin_patterns ,
@@ -136,9 +136,9 @@ async def list_patterns(
136136@router .post ("" , status_code = 201 )
137137async def create_pattern (
138138 data : PatternCreate ,
139- user : dict = Depends (require_auth ),
139+ user : dict = Depends (require_user_or_admin ),
140140) -> PatternResponse :
141- """Create a new custom pattern."""
141+ """Create a new custom pattern. Requires user or admin role. """
142142 # Validate the pattern
143143 if data .type == "grok" :
144144 is_valid , error = validate_grok_pattern (data .pattern )
@@ -246,9 +246,9 @@ async def list_grok_patterns(
246246@router .post ("/grok" , status_code = 201 )
247247async def create_grok_pattern (
248248 data : GrokPatternCreate ,
249- user : dict = Depends (require_auth ),
249+ user : dict = Depends (require_user_or_admin ),
250250) -> GrokPatternResponse :
251- """Create a new custom grok pattern component."""
251+ """Create a new custom grok pattern component. Requires user or admin role. """
252252 # Check if name conflicts with built-in
253253 builtins = {p ["name" ] for p in list_builtin_patterns ()}
254254 if data .name in builtins :
@@ -286,9 +286,9 @@ async def create_grok_pattern(
286286@router .post ("/grok/import" , response_model = GrokImportResult )
287287async def import_grok_patterns (
288288 request : GrokImportRequest ,
289- user : dict = Depends (require_auth ),
289+ user : dict = Depends (require_user_or_admin ),
290290) -> GrokImportResult :
291- """Import multiple grok patterns from file content.
291+ """Import multiple grok patterns from file content. Requires user or admin role.
292292
293293 Parses grok pattern file format (PATTERN_NAME<whitespace>pattern_expression).
294294 Lines starting with # are comments, blank lines are skipped.
@@ -368,9 +368,9 @@ async def get_grok_pattern(
368368async def update_grok_pattern (
369369 pattern_id : str ,
370370 data : GrokPatternUpdate ,
371- user : dict = Depends (require_auth ),
371+ user : dict = Depends (require_user_or_admin ),
372372) -> GrokPatternResponse :
373- """Update a custom grok pattern component."""
373+ """Update a custom grok pattern component. Requires user or admin role. """
374374 existing = database .get_grok_pattern (pattern_id )
375375 if not existing :
376376 raise HTTPException (status_code = 404 , detail = "Grok pattern not found" )
@@ -396,9 +396,9 @@ async def update_grok_pattern(
396396@router .delete ("/grok/{pattern_id}" , status_code = 204 )
397397async def delete_grok_pattern (
398398 pattern_id : str ,
399- user : dict = Depends (require_auth ),
399+ user : dict = Depends (require_user_or_admin ),
400400) -> None :
401- """Delete a custom grok pattern component."""
401+ """Delete a custom grok pattern component. Requires user or admin role. """
402402 existing = database .get_grok_pattern (pattern_id )
403403 if not existing :
404404 raise HTTPException (status_code = 404 , detail = "Grok pattern not found" )
@@ -428,9 +428,9 @@ async def get_pattern(
428428async def update_pattern (
429429 pattern_id : str ,
430430 data : PatternUpdate ,
431- user : dict = Depends (require_auth ),
431+ user : dict = Depends (require_user_or_admin ),
432432) -> PatternResponse :
433- """Update a custom pattern."""
433+ """Update a custom pattern. Requires user or admin role. """
434434 existing = database .get_pattern (pattern_id )
435435 if not existing :
436436 raise HTTPException (status_code = 404 , detail = "Pattern not found" )
@@ -466,9 +466,9 @@ async def update_pattern(
466466@router .delete ("/{pattern_id}" , status_code = 204 )
467467async def delete_pattern (
468468 pattern_id : str ,
469- user : dict = Depends (require_auth ),
469+ user : dict = Depends (require_user_or_admin ),
470470) -> None :
471- """Delete a custom pattern."""
471+ """Delete a custom pattern. Requires user or admin role. """
472472 existing = database .get_pattern (pattern_id )
473473 if not existing :
474474 raise HTTPException (status_code = 404 , detail = "Pattern not found" )
0 commit comments