ekoetki/controllers/auth.js

91 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const {Application} = require("../core/server");
const Joi = require("joi");
const { PostDataProcess } = require("../core/postdata");
const User = require("../database/user");
Application.get("/", LoginPage);
Application.get("/login", LoginPage);
Application.get("/register", RegisterPage);
///Application.post("/login", Login);
Application.post("/register", PostDataProcess(), Register);
/**
* @param {import("express").Request} request
* @param {import("express").Response} response
*/
async function LoginPage(request, response)
{
response.render("login");
}
/**
* @param {import("express").Request} request
* @param {import("express").Response} response
*/
async function RegisterPage(request, response)
{
response.render("register");
}
/**
* @param {import("express").Request} request
* @param {import("express").Response} response
*/
async function Register(request, response)
{
const schema = Joi.object({
name: Joi.string().min(2).max(30).required().error(new Error('Ad zorunludur ve 2 ile 30 karakter arasında olmalıdır.')),
surname: Joi.string().min(2).max(30).required().error(new Error('Soyad zorunludur ve 2 ile 30 karakter arasında olmalıdır.')),
email: Joi.string().email().required().error(new Error('Geçerli bir e-posta adresi giriniz.')),
password: Joi.string().min(6).max(20).required().error(new Error('Şifre zorunludur ve en az 6 karakter olmalıdır.')),
passwordverif: Joi.any().equal(Joi.ref("password")).required().error(new Error('Şifreler eşleşmiyor.'))
});
const {error} = schema.validate(request.body);
if(error)
{
return response.status(400).json({
status: "fail",
message: error.message
});
}
if(await User.hasUser(request.body.email))
{
return response.status(400).json({
status: "fail",
message: "E-Mail adresi zaten kullanılıyor."
});
}
let userid;
try{
userid = await User.createUser(
request.body.name,
request.body.surname,
request.body.email,
request.body.password
);
}catch{
return response.status(500).json({
status: "fail",
message: "Bir hata oluştu"
});
}
request.session.authendicated = true;
request.session.user_id = userid;
request.session.user = await User.getUser(userid);
return response.status(200).json({
status: "success",
message: "Kayıt işlemi başarılı, hesabınıza giriş yapabilirsiniz"
});
}