Improve exercise solution of 2.1, 2.2, 2.3 and 2.5
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user