mirror of
https://gitea.smigz.com/smiggiddy/odin-codeprojects.git
synced 2025-04-18 15:31:17 -04:00
done
This commit is contained in:
parent
e89fb616e7
commit
b1c295d2ac
12 changed files with 2783 additions and 55 deletions
13
file-uploader/.eslintrc.js
Normal file
13
file-uploader/.eslintrc.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
module.exports = {
|
||||
env: {
|
||||
browser: true,
|
||||
es2021: true,
|
||||
node: true,
|
||||
},
|
||||
extends: ["eslint:recommended", "prettier"],
|
||||
parserOptions: {
|
||||
ecmaVersion: "latest",
|
||||
sourceType: "module",
|
||||
},
|
||||
};
|
||||
|
4
file-uploader/.prettierrc
Normal file
4
file-uploader/.prettierrc
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"tabWidth": 4,
|
||||
"singleQuote": true
|
||||
}
|
2598
file-uploader/package-lock.json
generated
2598
file-uploader/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -11,6 +11,7 @@
|
|||
"description": "",
|
||||
"dependencies": {
|
||||
"@prisma/client": "^6.5.0",
|
||||
"bcrypt": "^5.1.1",
|
||||
"ejs": "^3.1.10",
|
||||
"express": "^5.1.0",
|
||||
"express-session": "^1.18.1",
|
||||
|
@ -18,6 +19,12 @@
|
|||
"passport": "^0.7.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"prisma": "^6.5.0"
|
||||
"css-loader": "^7.1.2",
|
||||
"html-webpack-plugin": "^5.6.3",
|
||||
"prisma": "^6.5.0",
|
||||
"style-loader": "^4.0.0",
|
||||
"template-ejs-loader": "^0.9.4",
|
||||
"webpack": "^5.98.0",
|
||||
"webpack-cli": "^6.0.1"
|
||||
}
|
||||
}
|
||||
|
|
14
file-uploader/public/js/form.js
Normal file
14
file-uploader/public/js/form.js
Normal file
|
@ -0,0 +1,14 @@
|
|||
console.log('form stuff');
|
||||
|
||||
const usernameCheck = async (username) => {
|
||||
let res = await fetch(`/auth/username?username=${username}`);
|
||||
return await res.json();
|
||||
};
|
||||
|
||||
const input = document.querySelector("input[name='username']");
|
||||
|
||||
input.addEventListener('input', async (e) => {
|
||||
let input = e.target.value;
|
||||
let test = await usernameCheck(input);
|
||||
test.results ? console.log('user exists') : console.log('user doesnt');
|
||||
});
|
|
@ -1,19 +1,53 @@
|
|||
const db = require("../models/auth")
|
||||
const { Auth } = require('../models/auth');
|
||||
const bcrypt = require('bcrypt');
|
||||
|
||||
const db = new Auth();
|
||||
|
||||
const loginGet = (req, res, next) => {
|
||||
res.send("Login Route")
|
||||
}
|
||||
res.send('Login Route');
|
||||
};
|
||||
|
||||
const registerGet = (req, res) => {
|
||||
res.render("register")
|
||||
}
|
||||
|
||||
res.render('register');
|
||||
};
|
||||
const registerPost = async (req, res, next) => {
|
||||
const { username, email, password, "password-confirmation": passwordConfirmation } = req.body;
|
||||
const { username, email, password } = req.body;
|
||||
|
||||
await db.createUser({ username: username, password: password, email: email })
|
||||
try {
|
||||
const hashedPassword = bcrypt.hash(password);
|
||||
const result = await db.createUser({
|
||||
username: username,
|
||||
password: hashedPassword,
|
||||
email: email,
|
||||
});
|
||||
if (result.error) {
|
||||
console.log(result.error);
|
||||
} else {
|
||||
console.log(result.message);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
next(e);
|
||||
}
|
||||
|
||||
res.redirect("/")
|
||||
}
|
||||
res.redirect('/');
|
||||
};
|
||||
|
||||
module.exports = { loginGet, registerPost, registerGet }
|
||||
const findByUsername = async (req, res, next) => {
|
||||
const { username } = req.query;
|
||||
|
||||
try {
|
||||
if (username && username.length > 0) {
|
||||
const exists = (await db.getUserByUsername(username))
|
||||
? true
|
||||
: false;
|
||||
|
||||
const data = { results: exists };
|
||||
res.json(data);
|
||||
}
|
||||
} catch (e) {
|
||||
res.json({ error: e });
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = { findByUsername, loginGet, registerPost, registerGet };
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
const db = require("../models/auth")
|
||||
// const db = require("../models/auth");
|
||||
const indexGet = async (req, res) => {
|
||||
const data = await db.allUsers()
|
||||
console.dir(data)
|
||||
res.render("main")
|
||||
}
|
||||
// const data = await db.allUsers()
|
||||
// console.dir(data)
|
||||
res.render("main");
|
||||
};
|
||||
|
||||
module.exports = { indexGet };
|
||||
|
||||
module.exports = { indexGet }
|
|
@ -1,23 +1,25 @@
|
|||
const express = require("express");
|
||||
const session = require("express-session")
|
||||
const passport = require("passport")
|
||||
const path = require("node:path");
|
||||
const express = require('express');
|
||||
const session = require('express-session');
|
||||
const passport = require('passport');
|
||||
const path = require('node:path');
|
||||
|
||||
const port = process.env.APP_PORT || 3000;
|
||||
const app = express();
|
||||
|
||||
const authRouter = require("./routes/authRouter")
|
||||
const indexRouter = require("./routes/indexRouter")
|
||||
const assetsPath = path.join(path.dirname(__dirname), 'public');
|
||||
app.use(express.static(assetsPath));
|
||||
|
||||
app.set("views", path.join(__dirname, "views"));
|
||||
app.set("view engine", "ejs");
|
||||
app.use(express.urlencoded({ extended: false }))
|
||||
const authRouter = require('./routes/authRouter');
|
||||
const indexRouter = require('./routes/indexRouter');
|
||||
|
||||
app.set('views', path.join(__dirname, 'views'));
|
||||
app.set('view engine', 'ejs');
|
||||
app.use(express.urlencoded({ extended: false }));
|
||||
|
||||
app.use("/", indexRouter);
|
||||
app.use("/auth", authRouter);
|
||||
|
||||
app.use('/', indexRouter);
|
||||
app.use('/auth', authRouter);
|
||||
|
||||
app.listen(port, () => {
|
||||
console.log(`App listening on ${port}`);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,7 +1,46 @@
|
|||
const { PrismaClient } = require("@prisma/client");
|
||||
const { PrismaClient, Prisma } = require("@prisma/client");
|
||||
// const { Prisma } = require("prisma");
|
||||
|
||||
const primsa = new PrismaClient()
|
||||
class Auth {
|
||||
constructor() {
|
||||
this.primsa = new PrismaClient();
|
||||
}
|
||||
async createUser(user) {
|
||||
try {
|
||||
await this.primsa.user.create({
|
||||
data: {
|
||||
username: user.username,
|
||||
email: user?.email,
|
||||
password: user.password,
|
||||
},
|
||||
});
|
||||
return { message: "user created" };
|
||||
} catch (e) {
|
||||
if (e instanceof Prisma.PrismaClientKnownRequestError) {
|
||||
if (e.code === "P2002") {
|
||||
console.log("User must use a unique username");
|
||||
return { error: "must use unique username" };
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async allUsers() {
|
||||
return await this.primsa.user.findMany();
|
||||
}
|
||||
|
||||
async getUserByUsername(username) {
|
||||
try {
|
||||
return await this.primsa.user.findUnique({
|
||||
where: {
|
||||
username: username,
|
||||
},
|
||||
});
|
||||
} catch (e) {
|
||||
return { error: e };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// async function main() {
|
||||
// const allUsers = await primsa.user.findMany()
|
||||
|
@ -18,18 +57,5 @@ const primsa = new PrismaClient()
|
|||
// process.exit(1)
|
||||
// })
|
||||
|
||||
async function createUser(user) {
|
||||
await primsa.user.create({
|
||||
data: {
|
||||
username: user.username,
|
||||
email: user?.email,
|
||||
password: user.password
|
||||
}
|
||||
})
|
||||
}
|
||||
module.exports = { Auth };
|
||||
|
||||
async function allUsers() {
|
||||
return await primsa.user.findMany()
|
||||
}
|
||||
|
||||
module.exports = { createUser, allUsers }
|
|
@ -1,11 +1,12 @@
|
|||
const { Router } = require("express");
|
||||
const authController = require("../controllers/authController")
|
||||
const { Router } = require('express');
|
||||
const authController = require('../controllers/authController');
|
||||
|
||||
const authRouter = Router();
|
||||
|
||||
authRouter.get("/login", authController.loginGet)
|
||||
authRouter.get("/register", authController.registerGet)
|
||||
authRouter.post("/register", authController.registerPost)
|
||||
authRouter.get('/login', authController.loginGet);
|
||||
authRouter.get('/register', authController.registerGet);
|
||||
authRouter.post('/register', authController.registerPost);
|
||||
authRouter.get('/username', authController.findByUsername);
|
||||
|
||||
module.exports = authRouter;
|
||||
|
||||
module.exports = authRouter;
|
|
@ -19,6 +19,7 @@
|
|||
<input type="email" name="email" id="email">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
<script src="/js/form.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
|
29
file-uploader/webpack.config.js
Normal file
29
file-uploader/webpack.config.js
Normal file
|
@ -0,0 +1,29 @@
|
|||
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = {
|
||||
mode: 'development',
|
||||
entry: './src/index.js',
|
||||
output: {
|
||||
filename: 'main.js',
|
||||
path: path.resolve(__dirname, 'dist'),
|
||||
clean: true,
|
||||
},
|
||||
plugins: [
|
||||
new HtmlWebpackPlugin({
|
||||
template: './src/views/main.ejs',
|
||||
}),
|
||||
],
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.css$/i,
|
||||
use: ['style-loader', 'css-loader'],
|
||||
},
|
||||
{
|
||||
test: /\.ejs$/i,
|
||||
use: ['html-loader', 'template-ejs-loader'],
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
Loading…
Add table
Reference in a new issue