Vue2_Frontend 수정1...

This commit is contained in:
최준흠 2022-08-30 19:53:34 +09:00
parent 64838d5e1f
commit 989e56fbce
5 changed files with 57 additions and 33 deletions

2
.env
View File

@ -10,4 +10,4 @@ VUE_APP_BACKEND_HEADERS_Access_Control_Allow_Origin="*"
#LocalStorage는 Edge 브라우저의 개발툴 > 응용프로그램 > 로컬 저장소에서 확인가능 #LocalStorage는 Edge 브라우저의 개발툴 > 응용프로그램 > 로컬 저장소에서 확인가능
VUE_APP_LOCALSTORAGE_NAME="access_token" VUE_APP_LOCALSTORAGE_NAME="access_token"
VUE_APP_SESSIONSTORAGE_REDIRECT_NAME = "RedirectPATH"

View File

@ -82,43 +82,51 @@ export default {
return dirty || validated ? valid : null return dirty || validated ? valid : null
}, },
async onSubmit() { async onSubmit() {
const result = await this.callAPI( const result = await this.callAPI('/auth/login', {
'/auth/login', email: this.form.email,
JSON.stringify({ password: this.form.password
email: this.form.email, })
password: this.form.password console.log(result)
}) if (!result) {
)
if (result.access_token) {
// localStorage , key-value Storage
localStorage.setItem(process.env.VUE_APP_LOCALSTORAGE_NAME, result)
alert('로그인 성공...')
console.log(this.$router)
//this.$router.push(this.$router.path)
} else {
console.log(result) console.log(result)
localStorage.removeItem(process.env.VUE_APP_LOCALSTORAGE_NAME) localStorage.removeItem(process.env.VUE_APP_LOCALSTORAGE_NAME)
alert('로그인 실패...') alert('로그인 실패...')
this.$router.back() //this.$router.back()
} else {
// localStorage , key-value Storage
localStorage.setItem(process.env.VUE_APP_LOCALSTORAGE_NAME, result)
alert('로그인 성공...')
// redirect path
this.$router.replace(
sessionStorage.getItem(
process.env.VUE_APP_SESSIONSTORAGE_REDIRECT_NAME
)
) || '/'
// CLear
this.onReset()
} }
}, },
onReset() { onReset() {
// Reset our form values // Reset our form values
this.form.email = '' this.form.email = ''
this.form.pasword = '' this.form.pasword = ''
// redirect path Clear
sessionStorage.removeItem(
process.env.VUE_APP_SESSIONSTORAGE_REDIRECT_NAME
)
// Trick to reset/clear native browser form validation state // Trick to reset/clear native browser form validation state
this.$nextTick(() => { // this.$nextTick(() => {
this.$refs.observer.reset() // this.$refs.observer.reset()
}) // })
}, },
async callAPI(url, params) { async callAPI(url, params) {
console.log('CallAPI..', [url, params]) console.log('CallAPI..', [url, params])
axios.defaults.baseURL = process.env.VUE_APP_BACKEND_HOST axios.defaults.baseURL = process.env.VUE_APP_BACKEND_HOST
// Header CORP // Header CORP
// axios.defaults.headers.post['Content-Type'] = axios.defaults.headers.post['Content-Type'] =
// process.env.VUE_APP_BACKEND_HEADERS_Content_Type process.env.VUE_APP_BACKEND_HEADERS_Content_Type
// axios.defaults.headers.post['Access-Control-Allow-Origin'] = axios.defaults.headers.post['Access-Control-Allow-Origin'] =
// process.env.VUE_APP_BACKEND_HEADERS_Access_Control_Allow_Origin process.env.VUE_APP_BACKEND_HEADERS_Access_Control_Allow_Origin
return await axios return await axios
.post(url, params) .post(url, params)
.then((response) => { .then((response) => {

View File

@ -141,10 +141,10 @@ export default {
console.log('CallAPI..', [url, params]) console.log('CallAPI..', [url, params])
axios.defaults.baseURL = process.env.VUE_APP_BACKEND_HOST axios.defaults.baseURL = process.env.VUE_APP_BACKEND_HOST
// Header CORP // Header CORP
// axios.defaults.headers.post['Content-Type'] = axios.defaults.headers.post['Content-Type'] =
// process.env.VUE_APP_BACKEND_HEADERS_Content_Type process.env.VUE_APP_BACKEND_HEADERS_Content_Type
// axios.defaults.headers.post['Access-Control-Allow-Origin'] = axios.defaults.headers.post['Access-Control-Allow-Origin'] =
// process.env.VUE_APP_BACKEND_HEADERS_Access_Control_Allow_Origin process.env.VUE_APP_BACKEND_HEADERS_Access_Control_Allow_Origin
// Header // Header
const headers = { const headers = {
// Authorization: // Authorization:

View File

@ -54,6 +54,7 @@
:sort-by.sync="sortBy" :sort-by.sync="sortBy"
:sort-desc.sync="sortDesc" :sort-desc.sync="sortDesc"
:sort-direction="sortDirection" :sort-direction="sortDirection"
@sort-changed="sortClick"
label-sort-asc="" label-sort-asc=""
label-sort-desc="" label-sort-desc=""
label-sort-clear="" label-sort-clear=""
@ -65,6 +66,7 @@
:no-border-collapse="commonTableAttributes.noBorderCollapse" :no-border-collapse="commonTableAttributes.noBorderCollapse"
:striped="commonTableAttributes.striped" :striped="commonTableAttributes.striped"
:hover="commonTableAttributes.hover" :hover="commonTableAttributes.hover"
:no-local-sorting="commonTableAttributes.noLocalSorting"
:bordered="commonTableAttributes.bordered" :bordered="commonTableAttributes.bordered"
:dark="commonTableAttributes.dark" :dark="commonTableAttributes.dark"
:head-variant="commonTableAttributes.headVariant" :head-variant="commonTableAttributes.headVariant"
@ -86,7 +88,7 @@
</template> </template>
<!-- 제목부분 출력용 --> <!-- 제목부분 출력용 -->
<template #cell(title)="row"> <template #cell(title)="row">
{{ row.item.title }} {{ row.item.title }}[{{ row.item.id }}]
</template> </template>
<!-- 상세 내용 출력용 --> <!-- 상세 내용 출력용 -->
<template #cell(content)="row"> <template #cell(content)="row">
@ -203,6 +205,7 @@ export default {
//noBorderCollapse: false, //noBorderCollapse: false,
striped: true, striped: true,
hover: true, hover: true,
noLocalSorting: true,
bordered: true, bordered: true,
dark: false, dark: false,
headVariant: 'light' headVariant: 'light'
@ -237,7 +240,7 @@ export default {
const results = await this.callAPI('/todo', { const results = await this.callAPI('/todo', {
params: { params: {
sortBy: this.sortBy, sortBy: this.sortBy,
sortDirection: this.sortDirection, sortDesc: this.sortDesc,
searchFields: this.searchFields, searchFields: this.searchFields,
search: this.search, search: this.search,
page: page, page: page,
@ -249,6 +252,8 @@ export default {
this.total = results.total this.total = results.total
this.perPage = results.perPage this.perPage = results.perPage
this.currentPage = results.page this.currentPage = results.page
this.sortBy = results.sortBy
this.sortDesc = results.sortDesc === 'true' ? true : false
this.rows = results.rows this.rows = results.rows
this.isBusy = false this.isBusy = false
}, },
@ -265,6 +270,12 @@ export default {
console.log(this.perPage) console.log(this.perPage)
this.getDatas() this.getDatas()
}, },
sortClick(event) {
console.log(event)
this.sortBy = event.sortBy
this.sortDesc = event.sortDesc
this.getDatas()
},
busyToggle() { busyToggle() {
this.isBusy = !this.isBusy this.isBusy = !this.isBusy
}, },
@ -291,10 +302,10 @@ export default {
async callAPI(url, params) { async callAPI(url, params) {
console.log('CallAPI..', [url, params]) console.log('CallAPI..', [url, params])
axios.defaults.baseURL = process.env.VUE_APP_BACKEND_HOST axios.defaults.baseURL = process.env.VUE_APP_BACKEND_HOST
// axios.defaults.headers.post['Content-Type'] = axios.defaults.headers.post['Content-Type'] =
// process.env.VUE_APP_BACKEND_HEADERS_Content_Type process.env.VUE_APP_BACKEND_HEADERS_Content_Type
// axios.defaults.headers.post['Access-Control-Allow-Origin'] = axios.defaults.headers.post['Access-Control-Allow-Origin'] =
// process.env.VUE_APP_BACKEND_HEADERS_Access_Control_Allow_Origin process.env.VUE_APP_BACKEND_HEADERS_Access_Control_Allow_Origin
return await axios return await axios
.get(url, params) .get(url, params)
.then((response) => { .then((response) => {

View File

@ -58,6 +58,11 @@ router.beforeEach((to, from, next) => {
//localStorage에 Access-Token이 없으면 Login페이지로 전송 //localStorage에 Access-Token이 없으면 Login페이지로 전송
if (!localStorage.getItem(process.env.VUE_APP_LOCALSTORAGE_NAME)) { if (!localStorage.getItem(process.env.VUE_APP_LOCALSTORAGE_NAME)) {
console.log(from.path + ' => 인증않됨 => Login 페이지 이동') console.log(from.path + ' => 인증않됨 => Login 페이지 이동')
//다음 이동할 URL 저장
sessionStorage.setItem(
process.env.VUE_APP_SESSIONSTORAGE_REDIRECT_NAME,
to.path
)
next({ name: 'login' }) next({ name: 'login' })
} }
console.log(from.path + ' => 인증 통과 => ' + to.path) console.log(from.path + ' => 인증 통과 => ' + to.path)