Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Jeongmin Seo
/
favorite_restaurant
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
Jeongmin Seo
2022-06-05 19:33:01 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
e905b4e847068bd43a8fa0476b181d7f2e2756ac
e905b4e8
1 parent
36f67119
Connect AWS RDS and register environment variable by dotenv
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
150 additions
and
84 deletions
jeongmin/login/app/app.js
jeongmin/login/app/bin/www.js
jeongmin/login/app/package-lock.json
jeongmin/login/app/package.json
jeongmin/login/app/src/config/db.js
jeongmin/login/app/src/databases/users.json
jeongmin/login/app/src/models/User.js
jeongmin/login/app/src/models/UserStorage.js
jeongmin/login/package-lock.json
jeongmin/login/app/app.js
View file @
e905b4e
...
...
@@ -2,6 +2,9 @@
//모듈
const
express
=
require
(
"express"
);
const
bodyParser
=
require
(
"body-parser"
);
//환경변수 (운영체제간 gap 없애고자)
const
dotenv
=
require
(
"dotenv"
);
dotenv
.
config
();
const
app
=
express
();
//라우팅
const
home
=
require
(
"./src/routes/home"
);
...
...
jeongmin/login/app/bin/www.js
View file @
e905b4e
"use strict"
;
const
PORT
=
3000
;
const
app
=
require
(
"../app"
);
const
PORT
=
process
.
env
.
PORT
||
3000
;
app
.
listen
(
PORT
,
()
=>
{
console
.
log
(
"서버 가동"
);
...
...
jeongmin/login/app/package-lock.json
View file @
e905b4e
...
...
@@ -36,6 +36,11 @@
"resolved"
:
"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
,
"integrity"
:
"sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"bignumber.js"
:
{
"version"
:
"9.0.0"
,
"resolved"
:
"https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz"
,
"integrity"
:
"sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A=="
},
"body-parser"
:
{
"version"
:
"1.20.0"
,
"resolved"
:
"https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz"
,
...
...
@@ -127,6 +132,11 @@
"resolved"
:
"https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
,
"integrity"
:
"sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
"core-util-is"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"
,
"integrity"
:
"sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"debug"
:
{
"version"
:
"2.6.9"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
,
...
...
@@ -145,6 +155,11 @@
"resolved"
:
"https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz"
,
"integrity"
:
"sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
},
"dotenv"
:
{
"version"
:
"16.0.1"
,
"resolved"
:
"https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz"
,
"integrity"
:
"sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ=="
},
"ee-first"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
,
...
...
@@ -316,6 +331,11 @@
"resolved"
:
"https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
,
"integrity"
:
"sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
},
"isarray"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
,
"integrity"
:
"sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"jake"
:
{
"version"
:
"10.8.5"
,
"resolved"
:
"https://registry.npmjs.org/jake/-/jake-10.8.5.tgz"
,
...
...
@@ -384,6 +404,24 @@
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
,
"integrity"
:
"sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"mysql"
:
{
"version"
:
"2.18.1"
,
"resolved"
:
"https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz"
,
"integrity"
:
"sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig=="
,
"requires"
:
{
"bignumber.js"
:
"9.0.0"
,
"readable-stream"
:
"2.3.7"
,
"safe-buffer"
:
"5.1.2"
,
"sqlstring"
:
"2.3.1"
},
"dependencies"
:
{
"safe-buffer"
:
{
"version"
:
"5.1.2"
,
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
,
"integrity"
:
"sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
}
}
},
"negotiator"
:
{
"version"
:
"0.6.3"
,
"resolved"
:
"https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz"
,
...
...
@@ -412,6 +450,11 @@
"resolved"
:
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
,
"integrity"
:
"sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
"process-nextick-args"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
,
"integrity"
:
"sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
"proxy-addr"
:
{
"version"
:
"2.0.7"
,
"resolved"
:
"https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz"
,
...
...
@@ -445,6 +488,27 @@
"unpipe"
:
"1.0.0"
}
},
"readable-stream"
:
{
"version"
:
"2.3.7"
,
"resolved"
:
"https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"
,
"integrity"
:
"sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw=="
,
"requires"
:
{
"core-util-is"
:
"~1.0.0"
,
"inherits"
:
"~2.0.3"
,
"isarray"
:
"~1.0.0"
,
"process-nextick-args"
:
"~2.0.0"
,
"safe-buffer"
:
"~5.1.1"
,
"string_decoder"
:
"~1.1.1"
,
"util-deprecate"
:
"~1.0.1"
},
"dependencies"
:
{
"safe-buffer"
:
{
"version"
:
"5.1.2"
,
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
,
"integrity"
:
"sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
}
}
},
"safe-buffer"
:
{
"version"
:
"5.2.1"
,
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
,
...
...
@@ -508,11 +572,31 @@
"object-inspect"
:
"^1.9.0"
}
},
"sqlstring"
:
{
"version"
:
"2.3.1"
,
"resolved"
:
"https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz"
,
"integrity"
:
"sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
},
"statuses"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
,
"integrity"
:
"sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
},
"string_decoder"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
,
"integrity"
:
"sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="
,
"requires"
:
{
"safe-buffer"
:
"~5.1.0"
},
"dependencies"
:
{
"safe-buffer"
:
{
"version"
:
"5.1.2"
,
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
,
"integrity"
:
"sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
}
}
},
"supports-color"
:
{
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
...
...
@@ -540,6 +624,11 @@
"resolved"
:
"https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
,
"integrity"
:
"sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
"util-deprecate"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
,
"integrity"
:
"sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"utils-merge"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
,
...
...
jeongmin/login/app/package.json
View file @
e905b4e
...
...
@@ -7,8 +7,10 @@
},
"dependencies"
:
{
"body-parser"
:
"^1.20.0"
,
"dotenv"
:
"^16.0.1"
,
"ejs"
:
"^3.1.8"
,
"express"
:
"^4.18.1"
"express"
:
"^4.18.1"
,
"mysql"
:
"^2.18.1"
},
"devDependencies"
:
{},
"scripts"
:
{
...
...
jeongmin/login/app/src/config/db.js
0 → 100644
View file @
e905b4e
const
mysql
=
require
(
"mysql"
);
const
db
=
mysql
.
createConnection
({
host
:
process
.
env
.
DB_HOST
,
user
:
process
.
env
.
DB_USER
,
password
:
process
.
env
.
DB_PASSWORD
,
database
:
process
.
env
.
DB_DATABASE
,
});
db
.
connect
();
module
.
exports
=
db
;
\ No newline at end of file
jeongmin/login/app/src/databases/users.json
deleted
100644 → 0
View file @
36f6711
{
"id"
:
[
"jeongmin"
,
"jumi"
,
"sss"
,
"sjeongmin"
],
"password"
:
[
"1234"
,
"1234"
,
"1111"
,
"1111"
],
"name"
:
[
"서정민"
,
"양주미"
,
"정민"
,
"서정민"
]
}
jeongmin/login/app/src/models/User.js
View file @
e905b4e
'use strict'
;
//for DB manipulate
const
UserStorage
=
require
(
"./UserStorage"
);
class
User
{
...
...
@@ -9,16 +9,21 @@ class User {
async
login
()
{
const
client
=
this
.
body
;
const
{
id
,
password
}
=
await
UserStorage
.
getUserInfo
(
client
.
id
);
// console.log(id, password);
if
(
id
)
{
if
(
id
===
client
.
id
&&
password
===
client
.
password
)
{
return
{
success
:
true
};
try
{
const
{
id
,
password
}
=
await
UserStorage
.
getUserInfo
(
client
.
id
);
// console.log(id, password);
if
(
id
)
{
if
(
id
===
client
.
id
&&
password
===
client
.
password
)
{
return
{
success
:
true
};
}
return
{
success
:
false
,
msg
:
"비밀번호가 틀렸습니다."
};
}
return
{
success
:
false
,
msg
:
"비밀번호가 틀렸습니다."
};
return
{
success
:
false
,
msg
:
"존재하지 않는 아이디입니다."
};
}
catch
(
err
)
{
return
{
success
:
false
,
msg
:
err
};
}
return
{
success
:
false
,
msg
:
"존재하지 않는 아이디입니다."
};
}
async
register
()
{
...
...
jeongmin/login/app/src/models/UserStorage.js
View file @
e905b4e
'use strict'
;
//
파일시스템 이용해서 파일 접근 및 DB 관리
const
fs
=
require
(
"fs"
).
promises
;
//
for DB CRUD
const
db
=
require
(
"../config/db"
)
;
class
UserStorage
{
static
#
getUserInfo
(
data
,
id
)
{
const
users
=
JSON
.
parse
(
data
);
const
idx
=
users
.
id
.
indexOf
(
id
);
const
userKeys
=
Object
.
keys
(
users
);
// [id, password, name]
const
userInfo
=
userKeys
.
reduce
((
newUser
,
info
)
=>
{
newUser
[
info
]
=
users
[
info
][
idx
];
return
newUser
;
},
{});
// console.log(userInfo);
return
userInfo
;
}
static
#
getUsers
(
data
,
isAll
,
fields
)
{
const
users
=
JSON
.
parse
(
data
);
if
(
isAll
)
return
users
;
const
newUsers
=
fields
.
reduce
((
newUsers
,
field
)
=>
{
if
(
users
.
hasOwnProperty
(
field
))
{
newUsers
[
field
]
=
users
[
field
];
}
return
newUsers
;
},
{});
return
newUsers
;
}
static
getUsers
(
isAll
,
...
fields
)
{
return
fs
.
readFile
(
"./src/databases/users.json"
)
.
then
((
data
)
=>
{
return
this
.
#
getUsers
(
data
,
isAll
,
fields
);
})
.
catch
((
err
)
=>
console
.
error
);
}
class
UserStorage
{
// static getUsers(isAll, ...fields) {
// }
static
getUserInfo
(
id
)
{
return
fs
.
readFile
(
"./src/databases/users.json"
)
.
then
((
data
)
=>
{
return
this
.
#
getUserInfo
(
data
,
id
);
})
.
catch
((
err
)
=>
console
.
error
);
return
new
Promise
((
resolve
,
reject
)
=>
{
const
query
=
"SELECT * FROM users WHERE id = ?;"
;
db
.
query
(
query
,
[
id
],
(
err
,
data
)
=>
{
if
(
err
)
reject
(
`
${
err
}
`
);
// console.log(data[0]);
resolve
(
data
[
0
]);
});
});
}
static
async
save
(
userInfo
)
{
const
users
=
await
this
.
getUsers
(
true
);
//id가 없으면 회원가입 가능
if
(
users
.
id
.
includes
(
userInfo
.
id
))
{
throw
"이미 존재하는 아이디입니다."
;
}
users
.
id
.
push
(
userInfo
.
id
);
users
.
name
.
push
(
userInfo
.
name
);
users
.
password
.
push
(
userInfo
.
password
);
fs
.
writeFile
(
"./src/databases/users.json"
,
JSON
.
stringify
(
users
));
return
{
success
:
true
};
return
new
Promise
((
resolve
,
reject
)
=>
{
const
query
=
"INSERT INTO users(id, name, password) VALUES(?, ?, ?);"
;
db
.
query
(
query
,
[
userInfo
.
id
,
userInfo
.
name
,
userInfo
.
password
],
(
err
,
data
)
=>
{
if
(
err
)
reject
(
`
${
err
}
`
);
// console.log(data[0]);
resolve
({
success
:
true
});
}
);
});
}
}
...
...
jeongmin/login/package-lock.json
0 → 100644
View file @
e905b4e
{
"lockfileVersion"
:
1
}
Please
register
or
login
to post a comment