From 3fa9ff42b552548436ffa33a80d7d99d2ebf260f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Tue, 27 May 2025 08:15:03 +0200 Subject: [PATCH] progress on player list --- app/src/router/index.ts | 4 +-- app/src/services/TokenService.ts | 17 +++++++++++ app/src/store/auth.ts | 3 -- app/src/store/player.ts | 4 +-- app/src/types/Player.ts | 4 ++- app/src/views/HomeView.vue | 29 +++++++++++++------ .../views/{PitcherList.vue => PlayerList.vue} | 24 +++++++-------- app/tests/unit/example.spec.ts | 6 ++-- backend/controllers/player.controller.js | 2 +- backend/models/player.model.js | 3 +- 10 files changed, 61 insertions(+), 35 deletions(-) rename app/src/views/{PitcherList.vue => PlayerList.vue} (65%) diff --git a/app/src/router/index.ts b/app/src/router/index.ts index 9b1152a..a98b5f2 100644 --- a/app/src/router/index.ts +++ b/app/src/router/index.ts @@ -1,7 +1,7 @@ import { createRouter, createWebHistory } from '@ionic/vue-router'; import { useStore } from 'vuex' import { RouteRecordRaw } from 'vue-router'; -import PitcherList from '../views/PitcherList.vue' +import PlayerList from '../views/PlayerList.vue' import LoginView from '../views/LoginView.vue' import HomeView from '../views/HomeView.vue' import BullpenView from "@/views/BullpenView.vue"; @@ -17,7 +17,7 @@ const routes: Array = [ { path: '/setup', component: SetupView }, { path: '/home', component: HomeView }, { path: '/profile', component: ProfileView }, - { path: '/pitchers', component: PitcherList }, + { path: '/player', component: PlayerList }, { path: '/bullpen', component: BullpenView }, { path: '/stats', component: BullpenListView }, { path: '/summary', component: BullpenSummaryView } diff --git a/app/src/services/TokenService.ts b/app/src/services/TokenService.ts index 62ffea4..5b25bc9 100644 --- a/app/src/services/TokenService.ts +++ b/app/src/services/TokenService.ts @@ -28,6 +28,23 @@ class TokenService { removeUser() { localStorage.removeItem("auth"); } + + isAdmin() { + return this.hasRole('ROLE_ADMIN'); + } + + isCoach() { + return this.hasRole('ROLE_COACH'); + } + + isPlayer() { + return this.hasRole('ROLE_PLAYER'); + } + + private hasRole(role: string) { + const user = this.getUser(); + return user?.roles ? user.roles.includes(role) : false; + } } export default new TokenService(); diff --git a/app/src/store/auth.ts b/app/src/store/auth.ts index 23df26c..15d3432 100644 --- a/app/src/store/auth.ts +++ b/app/src/store/auth.ts @@ -5,9 +5,6 @@ import {ActionContext, Module} from 'vuex'; import {RootState} from './index'; import TokenService from "@/services/TokenService"; import UserService from "@/services/UserService"; -import PlayerService from "@/services/PlayerService"; -import UserInfo from '@/types/UserInfo'; -import Player from '@/types/Player'; export interface AuthState { isAuthenticated: boolean; diff --git a/app/src/store/player.ts b/app/src/store/player.ts index e3b5ff5..57d6efc 100644 --- a/app/src/store/player.ts +++ b/app/src/store/player.ts @@ -18,13 +18,13 @@ const pitchTypes: Module = { determinePlayer({commit}: PlayerActionContext, user: User) { if (user.roles.includes('ROLE_PLAYER')) { playerService.fetchByUserId(user.id).then(player => { - commit('initialize', player); + commit('select', player); }); } } }, mutations: { - initialize(state, player: Player) { + select(state, player: Player) { state.player = player; } } diff --git a/app/src/types/Player.ts b/app/src/types/Player.ts index 601a5c0..3b95afe 100644 --- a/app/src/types/Player.ts +++ b/app/src/types/Player.ts @@ -1,3 +1,5 @@ +import User from "@/types/User"; + export default interface Player { id: number, gender: string, @@ -9,5 +11,5 @@ export default interface Player { state: string, createdAt: Date, updatedAt: Date, - userId: number + user: User } diff --git a/app/src/views/HomeView.vue b/app/src/views/HomeView.vue index 95313c1..60e3668 100644 --- a/app/src/views/HomeView.vue +++ b/app/src/views/HomeView.vue @@ -1,28 +1,32 @@ -
{{ pitcher.firstName }} {{ pitcher.lastName }}
+
{{ user.firstName }} {{ user.lastName }}
@@ -84,6 +91,10 @@ const logout = () => { Logout + + + Add Player +
diff --git a/app/src/views/PitcherList.vue b/app/src/views/PlayerList.vue similarity index 65% rename from app/src/views/PitcherList.vue rename to app/src/views/PlayerList.vue index fcb3365..ec1529c 100644 --- a/app/src/views/PitcherList.vue +++ b/app/src/views/PlayerList.vue @@ -1,24 +1,22 @@