Improve exercise solution of 2.1, 2.2, 2.3 and 2.5

This commit is contained in:
2024-11-26 12:40:01 +01:00
parent b5364639a5
commit 07f486c72e
4 changed files with 77 additions and 22 deletions

View File

@@ -137,7 +137,6 @@ band.get("/search", async (req: Request, res: Response) => {
// On stacked prompts, execute last prompt
if (prompts.length > 1) {
console.log(prompts[prompts.length - 2])
const [results, metadata] =
await sequelize.query(prompts[prompts.length - 2])
@@ -154,6 +153,9 @@ band.get("/search", async (req: Request, res: Response) => {
.then(bands => {
res.status(200).json(bands)
})
.catch(e => {
res.status(200).send()
})
}
})

View File

@@ -3,11 +3,12 @@ import { load } from "exifreader"
export async function loadLicense(url: string){
let result = ""
await load(url)
.then(tags => {
result = tags["Copyright"]["description"] + " by " + tags["Artist"]["description"]
})
.catch(e => {})
try {
await load(url)
.then(tags => {
result = tags["Copyright"]["description"] + " by " + tags["Artist"]["description"]
})
} catch {}
return result
}

View File

@@ -100,6 +100,18 @@ export const useAccountStore = defineStore("accountStore", {
}
},
async refreshAccount() {
getAccount(this.userAccountToken)
.then(response => {
this.userAccount = response.data
this.fetchInProgress = false
this.privilegeBuy = true
this.adminPanelVisible = response.data.accountRole.privilegeAdminPanel
})
},
/**
* Register a new account to the database
* Log in on success

View File

@@ -5,17 +5,22 @@ import { fetchLocationsBySearchTerm } from "../data/api/locationApi";
import { fetchConcertsBySearchTerm } from "../data/api/concertApi";
import { ConcertApiModel } from "@/data/models/acts/concertApiModel";
import { useExerciseStore } from "./exercise.store";
import { AccountApiModel } from "@/data/models/user/accountApiModel";
import { LocationApiModel } from "@/data/models/locations/locationApiModel";
import { BandApiModel } from "@/data/models/acts/bandApiModel";
import { useBandStore } from "./band.store";
import { useAccountStore } from "./account.store";
export const useSearchStore = defineStore("searchStore", {
state: () => ({
/** Search term */
searchTerm: ref(""),
searchTerm: ref<string>(""),
/** Band results */
bands: ref(),
bands: ref<Array<BandApiModel>>([]),
/** Location results */
locations: ref(),
locations: ref<Array<LocationApiModel>>([]),
/** Concert results */
concerts: ref<Array<ConcertApiModel>>([]),
@@ -37,28 +42,63 @@ export const useSearchStore = defineStore("searchStore", {
this.alreadySearched = true
this.fetchInProgress = true
// Exercise solutions
// todo: Rewrite to avoid easy exercise solution
if (this.searchTerm.endsWith("'); SELECT * FROM Accounts; --")) {
exerciseStore.solveExercise(2, 1)
} else if (this.searchTerm.endsWith("'); SELECT * FROM AccountRoles; --")) {
exerciseStore.solveExercise(2, 2)
} else if (this.searchTerm.includes("'); UPDATE Accounts SET accountRoleId = 2 WHERE username = ")) {
exerciseStore.solveExercise(2, 3)
} else if (this.searchTerm.includes("'); DELETE FROM Ratings WHERE rating = 5; --")) {
exerciseStore.solveExercise(2, 5)
}
/**
* Fetch all bands by this.searchTerm
*/
await fetchBandsBySearchTerm(this.searchTerm)
.then(result => {
.then(async result => {
this.bands = result.data
// Check for exercise solution
if (result.data.length != 0) {
// Exercise 2.1
if (this.bands[0].username != undefined) {
exerciseStore.solveExercise(2, 1)
console.log("Exercise 2.1 solved")
}
// Exercise 2.2
else if (this.bands[0].privilegeAdminPanel != undefined) {
exerciseStore.solveExercise(2, 2)
console.log("Exercise 2.2 solved")
}
}
// Exercise 2.3
else if (this.searchTerm.includes("UPDATE")) {
const accountStore = useAccountStore()
await accountStore.refreshAccount()
if (accountStore.userAccount.accountRole.privilegeAdminPanel == true) {
exerciseStore.solveExercise(2, 3)
console.log("Exercise 2.3 solved")
}
}
// Exercise 2.5
else if (this.searchTerm.includes("DELETE")) {
const bandStore = useBandStore()
await bandStore.getBand("muse")
if (bandStore.band.ratingValues.find(rating => rating.value == 5).count == 0) {
exerciseStore.solveExercise(2, 5)
console.log("Exercise 2.5 solved")
}
}
})
/**
* Fetch all locations by this.searchTerm
*/
await fetchLocationsBySearchTerm(this.searchTerm)
.then(result => {
this.locations = result.data
})
/**
* Fetch all concerts by this.searchTerm
*/
await fetchConcertsBySearchTerm(this.searchTerm)
.then(result => {
this.concerts = result.data