File tree 10 files changed +130
-21
lines changed
10 files changed +130
-21
lines changed Original file line number Diff line number Diff line change
1
+ import type { LocationQueryValue } from 'vue-router'
2
+
3
+ export const parseRouteQuery = ( query : LocationQueryValue | LocationQueryValue [ ] ) => {
4
+ if ( Array . isArray ( query ) ) {
5
+ return query . filter ( ( v ) : v is string => typeof v === 'string' )
6
+ } else {
7
+ return typeof query === 'string' ? [ query ] : [ '' ]
8
+ }
9
+ }
Original file line number Diff line number Diff line change
1
+ <script setup lang="ts">
2
+ import { parseRouteQuery } from ' @/composable/parseRouteQuery'
3
+ import { useRoute } from ' vue-router'
4
+
5
+ const route = useRoute ()
6
+ const redirectParams = parseRouteQuery (route .query .redirect )
7
+ </script >
8
+
9
+ <template >
10
+ <RouterLink :to =" redirectParams[0]" > ログインする </RouterLink >
11
+ </template >
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ <script setup lang="ts">
2
+ import MemberShipPageUserTypeSelectorButton from ' ./MemberShipPageUserTypeSelectorButton.vue'
3
+ </script >
4
+
5
+ <template >
6
+ <div class =" flex gap-2" >
7
+ <MemberShipPageUserTypeSelectorButton userType =" new" >
8
+ 新規入部
9
+ </MemberShipPageUserTypeSelectorButton >
10
+ <MemberShipPageUserTypeSelectorButton userType =" rejoin" >
11
+ 再入部
12
+ </MemberShipPageUserTypeSelectorButton >
13
+ <MemberShipPageUserTypeSelectorButton userType =" active" >
14
+ 継続所属
15
+ </MemberShipPageUserTypeSelectorButton >
16
+ </div >
17
+ </template >
Original file line number Diff line number Diff line change
1
+ <script setup lang="ts">
2
+ import { useRoute , useRouter } from ' vue-router'
3
+ import type { UserType } from ' ./types/userType'
4
+
5
+ const { userType } = defineProps <{ userType: UserType }>()
6
+
7
+ const route = useRoute ()
8
+ const router = useRouter ()
9
+ const replaceUserTypeQuery = (userType : UserType ) => {
10
+ const newQuery = { ... route .query , user_type: userType }
11
+ router .replace ({ query: newQuery })
12
+ }
13
+ </script >
14
+
15
+ <template >
16
+ <button @click =" replaceUserTypeQuery(userType)" >
17
+ <slot ></slot >
18
+ </button >
19
+ </template >
Original file line number Diff line number Diff line change 1
1
<script setup lang="ts">
2
+ import { computed , ref } from ' vue'
2
3
import { useRoute } from ' vue-router'
3
4
4
- import MemberShipPageUserTypeSelect from ' ./MemberShipPageUserTypeSelect.vue'
5
+ import MemberShipPageVerifyEmailLink from ' @/pages/membership/MembershipPageVerifyEmailLink.vue'
6
+ import MemberShipPageUserTypeSelector from ' ./MemberShipPageUserTypeSelector.vue'
7
+ import MembershipPageLoginLink from ' ./MembershipPageLoginLink.vue'
5
8
6
9
const route = useRoute ()
10
+
11
+ const isLoggedIn = ref (false )
12
+ const hasIsctAddress = ref (false )
13
+ const hasCustomerObjectOnTraqId = ref (false )
14
+ const isUserTypeActive = computed (() => route .query .user_type === ' active' )
7
15
</script >
8
16
9
17
<template >
10
18
<div class =" flex flex-col gap-2" >
11
- <MemberShipPageUserTypeSelect />
12
- <div >route.query.user_type: {{ route.query.user_type }}</div >
19
+ <div v-if =" isLoggedIn" >
20
+ <div v-if =" !hasCustomerObjectOnTraqId && !hasIsctAddress" >
21
+ isct アドレスの認証が必要です
22
+ <MemberShipPageVerifyEmailLink />
23
+ </div >
24
+ <div v-else >請求書情報入力へ</div >
25
+ </div >
26
+ <div v-else >
27
+ <MemberShipPageUserTypeSelector />
28
+ <div v-if =" isUserTypeActive" >
29
+ ログインが必要です
30
+ <MembershipPageLoginLink />
31
+ </div >
32
+ <div v-else-if =" !hasIsctAddress" >
33
+ isct アドレスの認証が必要です <MemberShipPageVerifyEmailLink />
34
+ </div >
35
+ <div v-else >請求書情報入力へ</div >
36
+ </div >
13
37
</div >
14
38
</template >
Original file line number Diff line number Diff line change
1
+ <script setup lang="ts">
2
+ import { useRoute } from ' vue-router'
3
+
4
+ const route = useRoute ()
5
+ const getLoginPageURL = {
6
+ path: ' /login' ,
7
+ query: { redirect: route .fullPath },
8
+ }
9
+ </script >
10
+
11
+ <template >
12
+ <RouterLink :to =" getLoginPageURL" >ログインへ</RouterLink >
13
+ </template >
Original file line number Diff line number Diff line change
1
+ <script setup lang="ts">
2
+ import { useRoute } from ' vue-router'
3
+
4
+ const route = useRoute ()
5
+ const getVerifyEmailPageURL = {
6
+ path: ' /verify-email' ,
7
+ query: { redirect: route .fullPath },
8
+ }
9
+ </script >
10
+
11
+ <template >
12
+ <RouterLink :to =" getVerifyEmailPageURL" >isct アドレスの認証へ</RouterLink >
13
+ </template >
Original file line number Diff line number Diff line change
1
+ <script setup lang="ts">
2
+ import { parseRouteQuery } from ' @/composable/parseRouteQuery'
3
+ import { useRoute } from ' vue-router'
4
+
5
+ const route = useRoute ()
6
+ const redirectParams = parseRouteQuery (route .query .redirect )
7
+ </script >
8
+
9
+ <template >
10
+ <RouterLink :to =" redirectParams[0]" > isct アドレスを認証する </RouterLink >
11
+ </template >
Original file line number Diff line number Diff line change @@ -17,6 +17,16 @@ const router = createRouter({
17
17
// which is lazy-loaded when the route is visited.
18
18
component : ( ) => import ( '@/pages/membership/MembershipPage.vue' ) ,
19
19
} ,
20
+ {
21
+ path : '/verify-email' ,
22
+ name : 'verify-email' ,
23
+ component : ( ) => import ( '@/pages/verify-email/VerifyEmailPage.vue' ) ,
24
+ } ,
25
+ {
26
+ path : '/login' ,
27
+ name : 'login' ,
28
+ component : ( ) => import ( '@/pages/login/LoginPage.vue' ) ,
29
+ } ,
20
30
] ,
21
31
} )
22
32
You can’t perform that action at this time.
0 commit comments