feat: [FE] Login Logic Implement.
This commit is contained in:
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
</footer>
|
</footer>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
export default {
|
export default {
|
||||||
name: "TheFooter"
|
name: "TheFooter"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
export default {
|
export default {
|
||||||
name: "TheArticle"
|
name: "TheArticle"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,7 +85,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
export default {
|
export default {
|
||||||
name: "TheHome"
|
name: "TheHome"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
export default {
|
export default {
|
||||||
name: "TheSetting"
|
name: "TheSetting"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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" }]
|
||||||
|
|||||||
Reference in New Issue
Block a user