feat: [FE] Login Logic Implement.

This commit is contained in:
minseokkang
2022-11-16 15:11:26 +09:00
parent e70b082120
commit d320d59daa
9 changed files with 52 additions and 24 deletions

View File

@@ -4,7 +4,7 @@
<TheFooter></TheFooter> <TheFooter></TheFooter>
</template> </template>
<script> <script lang="ts">
import TheHeader from '@/components/TheHeader.vue' import TheHeader from '@/components/TheHeader.vue'
import TheFooter from "@/components/TheFooter.vue"; import TheFooter from "@/components/TheFooter.vue";

View File

@@ -9,7 +9,7 @@
</footer> </footer>
</template> </template>
<script> <script lang="ts">
export default { export default {
name: "TheFooter" name: "TheFooter"
} }

View File

@@ -23,7 +23,7 @@
<router-link to="/article" class="nav-link" active-class="active">New Article</router-link> <router-link to="/article" class="nav-link" active-class="active">New Article</router-link>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<router-link to="/setting" class="nav-link" active-class="active"><i class="ion-gear-a"></i>Settings</router-link> <router-link to="/settings" class="nav-link" active-class="active"><i class="ion-gear-a"></i>Settings</router-link>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<router-link to="/login" class="nav-link" active-class="active">Sign in</router-link> <router-link to="/login" class="nav-link" active-class="active">Sign in</router-link>
@@ -38,7 +38,7 @@
</template> </template>
<script> <script lang="ts">
export default { export default {
name: "TheHeader" name: "TheHeader"
} }

View File

@@ -35,7 +35,7 @@
</template> </template>
<script> <script lang="ts">
export default { export default {
name: "TheArticle" name: "TheArticle"
} }

View File

@@ -85,7 +85,7 @@
</div> </div>
</template> </template>
<script> <script lang="ts">
export default { export default {
name: "TheHome" name: "TheHome"
} }

View File

@@ -5,27 +5,24 @@
<div class="row"> <div class="row">
<div class="col-md-6 offset-md-3 col-xs-12"> <div class="col-md-6 offset-md-3 col-xs-12">
<h1 class="text-xs-center">Sign up</h1> <h1 class="text-xs-center">Sign in</h1>
<p class="text-xs-center"> <p class="text-xs-center">
<a href="">Have an account?</a> <router-link to="/register">Need an account?</router-link>
</p> </p>
<ul class="error-messages"> <ul class="error-messages" v-if="loginValidation">
<li>That email is already taken</li> <li align="left">email or password is invalid</li>
</ul> </ul>
<form> <form>
<fieldset class="form-group"> <fieldset class="form-group">
<input class="form-control form-control-lg" type="text" placeholder="Your Name"> <input class="form-control form-control-lg" type="email" placeholder="Email" v-model="user.email">
</fieldset> </fieldset>
<fieldset class="form-group"> <fieldset class="form-group">
<input class="form-control form-control-lg" type="text" placeholder="Email"> <input class="form-control form-control-lg" type="password" placeholder="Password" v-model="user.password">
</fieldset> </fieldset>
<fieldset class="form-group"> <button @click = "signin" class="btn btn-lg btn-primary pull-xs-right">
<input class="form-control form-control-lg" type="password" placeholder="Password"> Sign in
</fieldset>
<button class="btn btn-lg btn-primary pull-xs-right">
Sign up
</button> </button>
</form> </form>
</div> </div>
@@ -35,9 +32,42 @@
</div> </div>
</template> </template>
<script> <script lang="ts">
import {reactive, ref} from "vue";
import axios from "axios";
import router from "@/router";
export default { export default {
name: "TheLogin" name: "TheLogin",
setup() {
const user = reactive({
email: "",
password: "",
})
let loginValidation = ref(false);
const signin = () => {
axios.post('http://localhost:8080/api/users/login',{
user
})
.then(response => {
window.localStorage.setItem("token",response.data.user.token);
router.push("/");
})
.catch(error =>{
console.log(error);
const code = error.response.data.errors.code;
if(code == "EMAIL_NULL_OR_INVALID"){
loginValidation.value = true;
}
})
}
return {user, loginValidation, signin};
}
} }
</script> </script>

View File

@@ -7,7 +7,7 @@
<div class="col-md-6 offset-md-3 col-xs-12"> <div class="col-md-6 offset-md-3 col-xs-12">
<h1 class="text-xs-center">Sign up</h1> <h1 class="text-xs-center">Sign up</h1>
<p class="text-xs-center"> <p class="text-xs-center">
<a href="">Have an account?</a> <router-link to="/login">Have an account?</router-link>
</p> </p>
<ul class="error-messages" v-if="emailDuplicate"> <ul class="error-messages" v-if="emailDuplicate">
@@ -39,7 +39,7 @@
</div> </div>
</template> </template>
<script> <script lang="ts">
import axios from "axios"; import axios from "axios";
import router from "@/router"; import router from "@/router";
@@ -77,7 +77,6 @@ export default {
}; };
const signup = () => { const signup = () => {
console.log(user)
axios.post('http://localhost:8080/api/users',{ axios.post('http://localhost:8080/api/users',{
user user
}) })

View File

@@ -37,7 +37,7 @@
</div> </div>
</template> </template>
<script> <script lang="ts">
export default { export default {
name: "TheSetting" name: "TheSetting"
} }

View File

@@ -18,7 +18,6 @@
"src/*" "src/*"
] ]
}, },
"allowJs": true
}, },
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
"references": [{ "path": "./tsconfig.node.json" }] "references": [{ "path": "./tsconfig.node.json" }]