autoLogin({ commit }) {
const cookieStr = process.browser ? document.cookie : this.app.context.req.headers.cookie || "";
const findToken = parseCookie(cookieStr);
if (findToken) {
const isValidToken = tkn => {
if (!tkn) {
return false;
}
const tokenData = jwtDecode(tkn) || {};
const expires = tokenData.exp || 0;
return (new Date().getTime() / 1000) < expires;
}
return isValidToken(findToken.token) ? commit("setToken", findToken.token) : commit("clearToken");
} else {
return commit("clearToken");
}
},
router.post("/login", async (req, res) => {
try {
const { body } = req;
const { email, password } = body;
const candidate = await User.findOne({ email });
if (candidate) {
const isTruePassword = await bcrypt.compare(password, candidate.password);
if (isTruePassword) {
const token = jwt.sign({ ...candidate }, process.env.SECRET_KEY, { expiresIn: Math.floor(Date.now() / 1000) + (60 * 60) });
return res.status(200).json({ ok: true, message: "Вы вошли", token: `Bearer ${token}` });
} else {
return res.status(400).json({ ok: false, message: "Неверный пароль" });
}
} else {
return res.status(404).json({ ok: false, message: "Такого пользователя не существет" });
}
} catch (err) {
console.log(err);
return res.status(500).json({ ok: false, message: "Произошла ошибка сервера" });
}
});