resetPassword.vue
3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<template>
<v-app id="login">
<v-container fluid fill-height>
<v-layout>
<v-flex xs12 sm8 md8 lg5 offset-sm2 offset-lg3 class="mt-5">
<v-toolbar class="fixcolors mt-5" dark>
<v-spacer></v-spacer>
<v-toolbar-title>Reset Password</v-toolbar-title>
<v-spacer></v-spacer>
</v-toolbar>
<v-card class="elevation-1 pa-3" id="form">
<v-card-text>
<v-flex xs12 sm8 md8 lg8 offset-sm2>
<v-form class="mt-3">
<v-select :rules="[rules.required]" label="Select Users" :tems="users"></v-select>
<v-select :rules="[rules.required]" label="Select Users Name" :tems="usersName"></v-select>
<v-text-field
:rules="[rules.required]"
v-model="user.oldPassword"
label="New Password"
></v-text-field>
<v-text-field
v-model="user.newPassword"
:rules="[rules.required]"
label="Re-Password"
></v-text-field>
</v-form>
</v-flex>
</v-card-text>
<v-card-actions>
<v-flex text-xs-center>
<v-btn
class="mt-3"
round
color="black"
dark
large
:loading="loading"
@click="reset"
>Reset Password</v-btn>
</v-flex>
</v-card-actions>
<v-snackbar
:timeout="timeout"
:top="y === 'top'"
:right="x === 'right'"
:vertical="mode === 'vertical'"
v-model="snackbar"
:color="color"
>{{ text }}</v-snackbar>
</v-card>
</v-flex>
</v-layout>
</v-container>
</v-app>
</template>
<script>
import http from "@/Services/http.js";
export default {
data() {
return {
snackbar: false,
y: "top",
x: "right",
mode: "",
timeout: 4000,
text: "",
user: {},
users: [],
usersName: [],
e1: true,
e2: true,
e3: true,
loading: false,
valid: false,
text: "Password Changed",
currentPassword: "",
newPassword: "",
confirmPassword: "",
rules: {
required: value => !!value || "This password field is Required."
// min: v => (/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})/).test(v) && v.length >= 8 || 'Min 8 characters upper case lower case symbol required'
}
};
},
methods: {
reset() {
var token = this.$store.state.token;
http()
.put("/schoolChangePassword", {
headers: { Authorization: "Bearer " + token }
})
.then(response => {
this.loading = true;
if ((this.snackbar = true)) {
this.text = "Successfully changed password !!";
console.log("snackbar", response.data.message);
}
setTimeout(() => {
this.$router.push("/dashboard");
}, 2000);
})
.catch(err => {
// console.log("err====>",err);
this.text = "User Not Found or Incorrect currentPassword";
this.snackbar = true;
this.loading = false;
});
}
},
computed: {
color() {
return this.loading ? "success" : "error";
}
}
};
</script>
<style scoped>
img {
position: absolute;
top: 13px;
left: 50px;
}
.v-btn--large {
padding: 0px 74px;
}
@media screen and (max-width: 769px) {
.v-btn--large {
font-size: 14px;
height: 44px;
padding: 0 32px;
}
}
</style>