File tree Expand file tree Collapse file tree 1 file changed +22
-1
lines changed Expand file tree Collapse file tree 1 file changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -136,8 +136,29 @@ export default class APIController {
136136
137137 // (TODO) DELETE Endpoint: /api/clans/:name
138138 // Deletes a clan by its name (a clan can only be deleted by its leader)
139- this . app . delete ( "/api/clans/:name" , ( req : express . Request , res : express . Response ) => {
139+ this . app . delete ( "/api/clans/:name" , async ( req : express . Request , res : express . Response ) => {
140+ const { session } = req . headers ;
141+ if ( ! session ) return res . status ( 400 ) . json ( {
142+ message : "No session header provided"
143+ } ) ;
144+
145+ const requester : Socket | undefined = this . base . sockets . find ( ( v : Socket ) => v . sessionid === session ) ;
146+ if ( ! requester ) return res . status ( 400 ) . json ( {
147+ message : "Invalid session ID provided"
148+ } ) ;
149+
150+ const clan : ClanData | undefined = await this . base . db . get ( "SELECT members FROM clans WHERE name = ?" , req . params . name ) ;
151+ if ( ! clan ) return res . status ( 404 ) . json ( {
152+ message : "Clan not found"
153+ } ) ;
154+ if ( clan . leader !== requester . username || requester . role === Role . ADMIN ) return res . status ( 403 ) . json ( {
155+ message : "Only the clean leader and administrators can delete this clan"
156+ } ) ;
140157
158+
159+ await this . base . db . run ( "UPDATE accounts SET clan = null WHERE clan = ?" , req . params . name ) ;
160+ await this . base . db . run ( "DELETE FROM clans WHERE clan = ?" , req . params . name )
161+ res . json ( clan ) ;
141162 } ) ;
142163
143164 // (TODO) POST Endpoint: /api/clans/:name
You can’t perform that action at this time.
0 commit comments