Skip to content

Commit 209b745

Browse files
committed
latest one
1 parent ff89ae1 commit 209b745

16 files changed

+3653
-1
lines changed

.env.example

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
PORT=4000
2+
DB_URL=

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.env
2+
node_modules

README.md

+38-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,38 @@
1-
# ghc-backend
1+
<h1 align="center">Welcome to GHC_BACKEND 👋</h1>
2+
<p>
3+
<img alt="Version" src="https://img.shields.io/badge/version-1.0.0-blue.svg?cacheSeconds=2592000" />
4+
<a href="#" target="_blank">
5+
<img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg" />
6+
</a>
7+
</p>
8+
9+
> GHC main Website Backend Services
10+
11+
### 🏠 [Homepage](server.js)
12+
13+
## Install
14+
15+
```sh
16+
yarn install
17+
```
18+
19+
## Usage
20+
21+
```sh
22+
node server.js
23+
```
24+
25+
## Author
26+
27+
👤 **Mitesh Bediya - GHC **
28+
29+
* Website: rippleinfosoft.com
30+
* Github: [@mitesh-200228](https://github.com/mitesh-200228)
31+
* LinkedIn: [@Mitesh Bediya](https://www.linkedin.com/in/mitesh-bediya-7a2318201/)
32+
33+
## Show your support
34+
35+
Give a ⭐️ if this project helped you!
36+
37+
***
38+
_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_

config/db.js

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
const mongoose = require('mongoose');
2+
3+
const connection = async (req, res) => {
4+
try {
5+
await mongoose.connect(process.env.DB_URL).then(() => {
6+
console.log("Connected Successfully");
7+
}).catch(err => {
8+
console.log(err);
9+
})
10+
} catch (error) {
11+
return res.status(400).json({message:'Something Wrong, Please try again'});
12+
}
13+
}
14+
15+
module.exports = connection;

controller/AuthController.js

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
const Team = require('../models/Team');
2+
const bcrypt = require('bcrypt');
3+
const OBBS = require('../services/OBBS');
4+
const generateToken = require('../services/generateToken');
5+
const jwt = require('jsonwebtoken');
6+
7+
function AuthController() {
8+
return {
9+
async Me(req, res) {
10+
const { token } = req.body;
11+
// console.log(token)
12+
try {
13+
const decoded = jwt.verify(token, process.env.JWT_KEY || "@njkddm#jkim");
14+
const teamId = decoded.id;
15+
const team = await Team.findById(teamId);
16+
17+
if (!team) {
18+
return res.status(500).json({
19+
team: null,
20+
});
21+
} else {
22+
return res.status(200).json({ team });
23+
}
24+
} catch (err) {
25+
return res.status(500).json({
26+
team: null,
27+
message: "Token invalid!"
28+
});
29+
}
30+
},
31+
async Login(req, res) {
32+
const { email, password } = req.body;
33+
if (!email || !password) {
34+
return res.status(400).json({ message: 'Please fill all the details!' });
35+
}
36+
try {
37+
const team_exist = await Team.findOne({ email: email });
38+
if (!team_exist) {
39+
return res.status(400).json({ message: 'Team Not Found, Please Register.' });
40+
} else if (team_exist.email === email) {
41+
const is_password_correct = await bcrypt.compare(password, team_exist.password).then((data) => {
42+
return data;
43+
}).catch(err => {
44+
console.log(err)
45+
return res.status(403).json({ message: 'Internal Server Error' });
46+
});
47+
if (is_password_correct) {
48+
const token = generateToken(team_exist.id);
49+
return res.status(200).json({ message: "Login success!", teamData: OBBS(team_exist), token: token });
50+
} else if (!is_password_correct) {
51+
return res.status(403).json({ message: 'Invalid password' });
52+
}
53+
54+
return res.status(500).json({ message: 'Internal Server Error' });
55+
}
56+
} catch (error) {
57+
console.log('team finding?', error)
58+
return res.status(500).json({ message: 'Internal Server Error' })
59+
}
60+
},
61+
async Register(req, res) {
62+
const { email, password, teamname, homeUniversity, activemembers, attendeventmembers, teamrepresentetive, emailrepresentetive, numberrepresentetive, teamlogo, officialteamname, teamaddress, country, postalcode } = req.body;
63+
64+
if (!email || !password || !teamname || !homeUniversity || !activemembers || !attendeventmembers || !teamrepresentetive || !emailrepresentetive || !numberrepresentetive || !teamlogo || !officialteamname || !teamaddress || !country || !postalcode) {
65+
return res.status(400).json({ message: 'Please fill all the details!' });
66+
}
67+
try {
68+
const team_exist = await Team.findOne({ email: email });
69+
if (team_exist) {
70+
return res.status(400).json({ message: 'Team Already Exists' });
71+
} else {
72+
try {
73+
const hashed_password = await bcrypt.hash(password, 10).then((data) => {
74+
return data;
75+
}).catch(err => {
76+
throw new Error(err);
77+
});
78+
await Team.create({ email, password: hashed_password, teamname, homeUniversity, activemembers, attendeventmembers, teamrepresentetive, emailrepresentetive, numberrepresentetive, teamlogo, officialteamname, teamaddress, country, postalcode }).then((result) => {
79+
const token = generateToken(result.id);
80+
return res.status(200).json({ message: 'Created!', token: token });
81+
}).catch(error => {
82+
console.log('Couldnt create team', error)
83+
return res.status(500).json({ message: 'Internal Server Error' })
84+
});
85+
} catch (error) {
86+
return res.status(500).json({ message: 'Internal Server Error' })
87+
}
88+
}
89+
} catch (error) {
90+
return res.status(500).json({ message: 'Internal Server Error' })
91+
}
92+
}
93+
}
94+
}
95+
96+
module.exports = AuthController;

controller/ContactController.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
const Message = require('../models/Message');
2+
3+
function ContactController() {
4+
return {
5+
async ContactUs(req, res) {
6+
const { name, email, message } = req.body;
7+
if (!name || !email || !message) {
8+
return res.status(404).json({ message: 'Please fill all the details!' });
9+
}
10+
11+
try {
12+
await Message.create({ name, email, message }).then((result) => {
13+
return res.status(200).send({ message: 'Message sent!' })
14+
}).catch(err => {
15+
console.log('couldnt send message', err)
16+
return res.status(500).send({ message: "Internal Server Error" })
17+
})
18+
} catch (error) {
19+
console.log(error);
20+
return res.status(500).send({ message: "Internal Server Error" })
21+
}
22+
}
23+
}
24+
}
25+
26+
module.exports = ContactController;

controller/TeamController.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const Team = require('../models/Team');
2+
3+
function TeamController(){
4+
return{
5+
async Edit(req,res){
6+
const team = req.body;
7+
if(!team){
8+
return res.status(404).json({message:'Send All Details'});
9+
}
10+
try {
11+
await Team.findOneAndUpdate({email:team.email},{$set:{}});
12+
} catch (error) {
13+
return res.status(500).json({message:'Internal Server Error'});
14+
}
15+
}
16+
}
17+
}
18+
19+
module.exports = TeamController;

models/Message.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
const mongoose = require('mongoose');
2+
3+
const Message = new mongoose.Schema({
4+
name: {
5+
type: String,
6+
required: true,
7+
},
8+
email: {
9+
type: String,
10+
required: true,
11+
},
12+
message: {
13+
type: String,
14+
required: true,
15+
},
16+
}, {
17+
timestamps: true
18+
});
19+
20+
module.exports = mongoose.model('Message', Message);

models/Team.js

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
const mongoose = require('mongoose');
2+
3+
const Team = new mongoose.Schema({
4+
email: {
5+
type: String,
6+
required: true,
7+
},
8+
password: {
9+
type: String,
10+
required: true,
11+
},
12+
teamname: {
13+
type: String,
14+
required: true,
15+
},
16+
homeUniversity: {
17+
type: String,
18+
required: true,
19+
},
20+
activemembers: {
21+
type: Number,
22+
required: true,
23+
},
24+
attendeventmembers: {
25+
type: Number,
26+
required: true,
27+
},
28+
teamrepresentetive: {
29+
type: String,
30+
required: true,
31+
},
32+
emailrepresentetive: {
33+
type: String,
34+
required: true,
35+
},
36+
numberrepresentetive: {
37+
type: Number,
38+
required: true,
39+
},
40+
teamlogo: {
41+
type: String,
42+
required: true,
43+
},
44+
officialteamname: {
45+
type: String,
46+
required: true,
47+
},
48+
teamaddress: {
49+
type: String,
50+
required: true,
51+
},
52+
country: {
53+
type: String,
54+
required: true,
55+
},
56+
postalcode: {
57+
type: String,
58+
required: true
59+
}
60+
}, {
61+
timestamps: true
62+
});
63+
64+
module.exports = mongoose.model('Team', Team);

0 commit comments

Comments
 (0)