File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11from flask import jsonify , request , abort
22from .. import app , loader
33from ..utils .utils import get_puzzle_info
4+ from ..auth import login_required
45
56@app .route ('/puzzles' , methods = ['GET' ])
67def puzzles ():
@@ -115,6 +116,7 @@ def run():
115116 return jsonify ({'message' : 'Theme or puzzle not found' })
116117
117118@app .route ('/puzzle/upload' , methods = ['POST' ])
119+ @login_required
118120def upload_puzzle ():
119121 """
120122 Upload puzzle
@@ -154,6 +156,7 @@ def upload_puzzle():
154156 return jsonify ({'message' : 'Puzzle uploaded' })
155157
156158@app .route ('/puzzle' , methods = ['DELETE' ])
159+ @login_required
157160def delete_puzzle ():
158161 """
159162 Delete puzzle
Original file line number Diff line number Diff line change @@ -60,6 +60,7 @@ def theme():
6060
6161# Create theme
6262@app .route ('/theme' , methods = ['POST' ])
63+ @login_required
6364def create_theme ():
6465 """
6566 Create a theme
@@ -82,6 +83,7 @@ def create_theme():
8283
8384# Delete theme
8485@app .route ('/theme' , methods = ['DELETE' ])
86+ @login_required
8587def delete_theme ():
8688 """
8789 Delete a theme
@@ -105,6 +107,7 @@ def delete_theme():
105107 return jsonify ({'message' : 'Theme deleted' })
106108
107109@app .route ('/theme/reload' , methods = ['POST' ])
110+ @login_required
108111def reload ():
109112 """
110113 Reload the puzzles
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ import { Button } from "primereact/button";
1313import { Tooltip } from "primereact/tooltip" ;
1414import { Tag } from "primereact/tag" ;
1515import "./FileUpload.css" ;
16+ import AuthService from "../../services/AuthService" ;
1617
1718interface FileUploadProps {
1819 theme : string ;
@@ -89,9 +90,13 @@ export default function FileUploadComponent({
8990 }
9091 const fileFormData = new FormData ( ) ;
9192 fileFormData . append ( "file" , file , file . name ) ;
93+ const token = AuthService . getToken ( ) ;
9294 return fetch ( `/puzzle/upload?theme=${ theme } ` , {
9395 method : "POST" ,
9496 body : fileFormData ,
97+ headers : {
98+ Authorization : `Bearer ${ token } ` ,
99+ } ,
95100 } ) ;
96101 } )
97102 ) ;
@@ -100,6 +105,9 @@ export default function FileUploadComponent({
100105
101106 fetch ( "/theme/reload" , {
102107 method : "POST" ,
108+ headers : {
109+ Authorization : `Bearer ${ AuthService . getToken ( ) } ` ,
110+ } ,
103111 } ) . then ( ( res ) => {
104112 if ( res . ok ) {
105113 setRefresh ( true ) ;
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import { InputText } from "primereact/inputtext";
66import { Dialog } from "primereact/dialog" ;
77import { useEffect , useState } from "react" ;
88import { convertBytes } from "../../utils/utils" ;
9+ import AuthService from "../../services/AuthService" ;
910
1011interface HomeProps {
1112 setSelectedMenu : ( menu : string ) => void ;
@@ -43,8 +44,13 @@ export default function HomePage({ setSelectedMenu }: HomeProps) {
4344 } ;
4445
4546 const handleDeleteTheme = ( theme : Theme ) => {
47+ const token = AuthService . getToken ( ) ;
4648 fetch ( `/theme?name=${ theme . name } ` , {
4749 method : "DELETE" ,
50+ headers : {
51+ Authorization : `Bearer ${ token } ` ,
52+ "Content-Type" : "application/json" ,
53+ } ,
4854 } ) . then ( ( res ) => {
4955 if ( res . ok ) {
5056 setSuccessMsg ( "Theme deleted successfully" ) ;
@@ -61,9 +67,11 @@ export default function HomePage({ setSelectedMenu }: HomeProps) {
6167 } ;
6268
6369 const handleCreateTheme = ( ) => {
70+ const token = AuthService . getToken ( ) ;
6471 fetch ( `/theme?name=${ newThemeName } ` , {
6572 method : "POST" ,
6673 headers : {
74+ Authorization : `Bearer ${ token } ` ,
6775 "Content-Type" : "application/json" ,
6876 } ,
6977 } ) . then ( ( res ) => {
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import { convertBytes } from "../../utils/utils";
77import { Puzzle } from "../../types/Puzzle" ;
88import FileUploadComponent from "../../components/FileUpload/FileUpload" ;
99import { Toast } from "primereact/toast" ;
10+ import AuthService from "../../services/AuthService" ;
1011
1112interface ThemeProps {
1213 selectedMenu : string ;
@@ -35,8 +36,13 @@ export default function ThemePage({ selectedMenu }: ThemeProps) {
3536 } , [ selectedTheme , refreshTheme ] ) ;
3637
3738 const handleDeletePuzzle = ( puzzle : Puzzle ) => {
39+ const token = AuthService . getToken ( ) ;
3840 fetch ( `/puzzle?theme=${ selectedTheme } &puzzle=${ puzzle . name } ` , {
3941 method : "DELETE" ,
42+ headers : {
43+ Authorization : `Bearer ${ token } ` ,
44+ "Content-Type" : "application/json" ,
45+ } ,
4046 } ) . then ( ( res ) => {
4147 if ( res . ok ) {
4248 setTheme ( ( prevTheme ) => {
You can’t perform that action at this time.
0 commit comments