Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
b4efd15
기존 디렉토리 archive + 새로운 auth 디렉토리 생성
Aug 21, 2020
ff2c320
POST /login
Aug 21, 2020
bc4e541
delete useless column
Aug 21, 2020
a827505
POST /register
Aug 21, 2020
2d8992e
validate token
Aug 21, 2020
d48f1f6
remove useless modules
Aug 21, 2020
a0f29ce
Add cancelRequest api
Aug 22, 2020
dfde57b
feat(login): finish login implementation with cookies
kmsngh Aug 23, 2020
a653616
Merge pull request #19 from winningarc/login
kmsngh Aug 23, 2020
106d1d7
feat(payment): define payment model
kmsngh Aug 25, 2020
7909df2
feat(payment): add API for bulkCreate
kmsngh Aug 25, 2020
a7ca2b7
feat(admin): manage session with cookies
kmsngh Aug 26, 2020
531a5f2
Merge pull request #21 from winningarc/feature/admin
kmsngh Aug 26, 2020
3b4569b
fix: add cors origin
kmsngh Aug 27, 2020
adb6367
fix(check): response for unauthorized
kmsngh Aug 27, 2020
7c74a6a
Merge branch 'develop' of https://github.com/winningarc/kaist-ua-serv…
kmsngh Aug 27, 2020
7d53a6a
Merge branch 'feature/student-fee-cancel' into master
kmsngh Aug 27, 2020
c1d6578
Merge pull request #20 from CheddarChoi/master
kmsngh Aug 27, 2020
fd788f9
Merge pull request #22 from winningarc/feature/admin
kmsngh Aug 27, 2020
f6e34b7
Merge branch 'develop' of https://github.com/winningarc/kaist-ua-serv…
kmsngh Aug 27, 2020
6fc383f
feature: add payment record query
kmsngh Aug 27, 2020
209e133
Merge pull request #23 from winningarc/feature/student-fee-cancel
kmsngh Aug 27, 2020
fce44f2
Merge branch 'develop' into feature/student-fee
kmsngh Aug 27, 2020
95a46f5
Merge pull request #24 from winningarc/feature/student-fee
kmsngh Aug 27, 2020
140d1ea
feat(sequelize): redesign database with migrations
kmsngh Aug 28, 2020
c39afe4
fix: payment api
kmsngh Aug 28, 2020
31cc697
feature: seeders
kmsngh Aug 28, 2020
cc6f730
fix: foreignKey definitions and reimplement apis
kmsngh Aug 29, 2020
64494f7
fix: apis
kmsngh Aug 31, 2020
3c20266
Merge pull request #25 from winningarc/feature/sequelize
kmsngh Aug 31, 2020
4a2d0f9
fix: migration
kmsngh Aug 31, 2020
992e146
feat: add redirect link
kmsngh Sep 18, 2020
8121c7a
feat: add english author to Post
kmsngh Sep 30, 2020
60e36dd
Merge pull request #26 from winningarc/feature/sequelize
kmsngh Sep 30, 2020
64a535d
feat: add petition table
kmsngh Oct 1, 2020
a6ef087
Merge branch 'feature/sequelize' of https://github.com/winningarc/kai…
kmsngh Oct 1, 2020
ccbc11d
feat: automatic petition vote when write
kmsngh Oct 3, 2020
d320878
Merge pull request #27 from winningarc/develop
kmsngh Oct 3, 2020
d0cc538
fix: migration
kmsngh Oct 3, 2020
700c53b
Merge branch 'master' of https://github.com/winningarc/kaist-ua-server
kmsngh Oct 3, 2020
407160f
feat: add key to register
kmsngh Oct 4, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions config/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
require("dotenv").config();

module.exports = {
development: {
username: process.env.USERNAME,
password: process.env.PASSWORD,
database: process.env.DATABASE,
host: process.env.HOST,
dialect: "mysql",
operatorsAliases: 0,
},
test: {
username: process.env.USERNAME,
password: process.env.PASSWORD,
database: process.env.DATABASE,
host: process.env.HOST,
dialect: "mysql",
operatorsAliases: 0,
},
production: {
username: process.env.USERNAME,
password: process.env.PASSWORD,
database: process.env.DATABASE,
host: process.env.HOST,
dialect: "mysql",
operatorsAliases: 0,
},
};
37 changes: 18 additions & 19 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,42 +1,41 @@
require('dotenv').config();
const Koa = require('koa');
const bodyParser = require('koa-body');
const cors = require('@koa/cors');
const logger = require('koa-logger');
const router = require('./src/routes');
const models = require('./src/database/models/index.js');
const helmet = require('koa-helmet');
const passport = require('koa-passport');
const swagger = require('koa2-swagger-ui');
const swaggerDoc = require('./src/utils/swaggerDef.js');
require("dotenv").config();
const Koa = require("koa");
const bodyParser = require("koa-body");
const cors = require("@koa/cors");
const logger = require("koa-logger");
const router = require("./src/routes");
const models = require("./src/database/models/index.js");
const helmet = require("koa-helmet");
const swagger = require("koa2-swagger-ui");
const swaggerDoc = require("./src/utils/swaggerDef.js");
const { jwtMiddleware } = require("./src/utils");

const run = async () => {
const app = new Koa();

models.sequelize
.sync()
.then(() => {
console.log(' DB 연결 성공');
console.log(" DB 연결 성공");
})
.catch((err) => {
console.log('연결 실패');
console.log("연결 실패");
console.log(err);
});

app.use(cors());
app.use(cors({ credentials: true, origin: process.env.ORIGIN }));
app.use(helmet());
app.use(passport.initialize());
require('./src/config/accesstoken-strategy.js');
app.use(logger());
app.use(bodyParser());
app.use(jwtMiddleware);
app.use(router.routes()).use(router.allowedMethods());
app.use(
swagger({
routePrefix: '/swagger',
routePrefix: "/swagger",
swaggerOptions: {
url: '/swagger.json',
url: "/swagger.json",
},
}),
})
);
app.use(swaggerDoc.routes());

Expand Down
8 changes: 5 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@
"homepage": "https://github.com/winningarc/kaist-ua-server#readme",
"dependencies": {
"@koa/cors": "^3.0.0",
"aws-sdk": "^2.766.0",
"cors": "^2.8.5",
"crypto": "^1.0.1",
"dotenv": "^8.2.0",
"koa": "^2.11.0",
"jsonwebtoken": "^8.5.1",
"koa": "^2.13.0",
"koa-body": "^4.1.1",
"koa-helmet": "^5.2.0",
"koa-logger": "^3.2.1",
Expand All @@ -36,11 +38,11 @@
"passport": "^0.4.1",
"passport-accesstoken": "^0.1.0",
"router": "^1.3.5",
"sequelize": "^4.44.4",
"sequelize": "^6.3.5",
"swagger-jsdoc": "^4.0.0",
"yarn": "^1.22.4"
},
"devDependencies": {
"eslint": "^7.7.0"
}
}
}
24 changes: 0 additions & 24 deletions src/config/accesstoken-strategy.js

This file was deleted.

22 changes: 22 additions & 0 deletions src/database/migrations/20200827223319-create-admin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
"use strict";

module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable("Admin", {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true,
},
email: Sequelize.STRING,
password: Sequelize.STRING,
salt: Sequelize.STRING,
createdAt: Sequelize.DATE,
updatedAt: Sequelize.DATE,
});
},

down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable("Admin");
},
};
20 changes: 20 additions & 0 deletions src/database/migrations/20200827223527-create-banner.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
"use strict";

module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable("Banner", {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true,
},
image: Sequelize.TEXT,
link: Sequelize.TEXT,
isActive: Sequelize.BOOLEAN,
});
},

down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable("Banner");
},
};
21 changes: 21 additions & 0 deletions src/database/migrations/20200827223657-create-board.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"use strict";

module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable("Board", {
id: {
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
korTitle: Sequelize.STRING,
engTitle: Sequelize.STRING,
korDescription: Sequelize.TEXT,
engDescription: Sequelize.TEXT,
});
},

down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable("Board");
},
};
21 changes: 21 additions & 0 deletions src/database/migrations/20200827223837-create-cancel-request.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"use strict";

module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable("CancelRequest", {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true,
},
year: Sequelize.INTEGER,
semester: Sequelize.STRING,
createdAt: Sequelize.DATE,
updatedAt: Sequelize.DATE,
});
},

down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable("CancelRequest");
},
};
20 changes: 20 additions & 0 deletions src/database/migrations/20200827223935-create-payment.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
"use strict";

module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable("Payment", {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true,
},
studentNumber: Sequelize.STRING,
year: Sequelize.INTEGER,
semester: Sequelize.STRING,
});
},

down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable("Payment");
},
};
29 changes: 29 additions & 0 deletions src/database/migrations/20200827224019-create-post.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
"use strict";

module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable("Post", {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true,
},
author: Sequelize.TEXT,
korTitle: Sequelize.TEXT,
engTitle: Sequelize.TEXT,
korContent: Sequelize.TEXT,
engContent: Sequelize.TEXT,
views: {
type: Sequelize.INTEGER,
defaultValue: 0,
},
isActive: Sequelize.BOOLEAN,
createdAt: Sequelize.DATE,
updatedAt: Sequelize.DATE,
});
},

down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable("Post");
},
};
28 changes: 28 additions & 0 deletions src/database/migrations/20200827224111-create-student.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
"use strict";

module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable("Student", {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true,
},
studentNumber: {
type: Sequelize.INTEGER,
allowNull: false,
unique: true,
},
kaistUid: Sequelize.STRING,
korName: Sequelize.STRING,
engName: Sequelize.STRING,
affiliation: Sequelize.STRING,
createdAt: Sequelize.DATE,
updatedAt: Sequelize.DATE,
});
},

down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable("Student");
},
};
76 changes: 76 additions & 0 deletions src/database/migrations/20200827230222-create-associations.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
"use strict";

module.exports = {
up: async (queryInterface, Sequelize) => {
// Board hasMany Post
return queryInterface
.addColumn(
"Post", // name of Source model
"boardId", // name of the key we're adding
{
type: Sequelize.INTEGER,
references: {
model: "Board", // name of Target model
key: "id", // key in Target model that we're referencing
},
onUpdate: "CASCADE",
onDelete: "SET NULL",
}
)
.then(() => {
// Student hasMany CancelRequest
return queryInterface.addColumn(
"CancelRequest", // name of Target model
"studentNumber", // name of the key we're adding
{
type: Sequelize.INTEGER,
references: {
model: "Student", // name of Source model
key: "studentNumber",
},
onUpdate: "CASCADE",
onDelete: "SET NULL",
}
);
})
.then(() => {
// Student hasMany Payment
return queryInterface.addColumn(
"Payment", // name of Target model
"studentId", // name of the key we're adding
{
type: Sequelize.UUID,
references: {
model: "Student", // name of Source model
key: "id",
},
onUpdate: "CASCADE",
onDelete: "SET NULL",
}
);
});
},

down: async (queryInterface, Sequelize) => {
// remove Board hasMany Post
return queryInterface
.removeColumn(
"Post", // name of Source model
"boardId" // key we want to remove
)
.then(() => {
// remove Student hasMany CancelRequest
return queryInterface.removeColumn(
"CancelRequest", // name of the Target model
"studentNumber" // key we want to remove
);
})
.then(() => {
// remove Student hasMany Payment
return queryInterface.removeColumn(
"Payment", // name of the Target model
"studentId" // key we want to remove
);
});
},
};
Loading