Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
students
travel
Commits
48441161
Commit
48441161
authored
Jul 21, 2022
by
Kim, MinGyu
Browse files
deleteUser
parent
8fbd9c22
Changes
5
Show whitespace changes
Inline
Side-by-side
frontend/src/apis/profile.api.ts
View file @
48441161
...
...
@@ -13,3 +13,7 @@ export const picture = async (formdata: FormData) => {
export
const
nickname
=
async
(
formdata
:
FormData
)
=>
{
await
axios
.
post
(
`
${
baseUrl
}
/profile`
,
formdata
);
};
export
const
deleteUser
=
async
()
=>
{
await
axios
.
post
(
`
${
baseUrl
}
/profile/delete`
);
};
frontend/src/auth/profile.tsx
View file @
48441161
import
React
,
{
useEffect
,
useState
}
from
"
react
"
;
import
{
Profile
}
from
"
../types
"
;
import
{
profileApi
}
from
"
../apis
"
;
import
{
useAuth
}
from
"
../auth/auth.context
"
;
export
default
function
Profile
()
{
// 로컬 저장소에는 로그인 여부만 저장
...
...
@@ -9,6 +10,7 @@ export default function Profile() {
const
[
file
,
setFile
]
=
useState
<
File
>
();
const
[
imageSrc
,
setImageSrc
]
=
useState
(
""
);
const
[
nickname
,
setNickname
]
=
useState
(
""
);
const
{
logout
}
=
useAuth
();
const
handleProfile
=
async
()
=>
{
const
user
:
Profile
=
await
profileApi
.
profile
();
...
...
@@ -57,6 +59,10 @@ export default function Profile() {
await
profileApi
.
picture
(
formdata
);
};
const
deleteClick
=
async
()
=>
{
await
profileApi
.
deleteUser
().
then
(()
=>
logout
());
};
useEffect
(()
=>
{
userChange
();
},
[]);
...
...
@@ -119,6 +125,9 @@ export default function Profile() {
<
button
onClick
=
{
handleClick
}
className
=
" border-2 "
>
저장하기
</
button
>
<
button
onClick
=
{
deleteClick
}
className
=
"border-2"
>
계정 삭제
</
button
>
</
div
>
</
form
>
</
div
>
...
...
src/controllers/user.controller.ts
View file @
48441161
...
...
@@ -74,3 +74,11 @@ export const postPicture = asyncWrap(async (reqExp, res) => {
});
res
.
json
();
});
export
const
deleteUser
=
asyncWrap
(
async
(
reqExp
,
res
)
=>
{
const
req
=
reqExp
as
TypedRequestAuth
<
{
userId
:
ObjectId
}
>
;
// 앞에서는 토큰으로써 사용하기 때문에 JwtPayload 를 사용하고 여기서는 verify 에서 토큰을 디코딩했기에 ObjectId 타입의 string으로 바뀌게 된다.
const
{
userId
}
=
req
.
auth
;
const
profile
=
await
userDb
.
deleteUser
(
userId
);
res
.
json
(
profile
);
});
src/db/user.db.ts
View file @
48441161
import
bcrypt
from
"
bcryptjs
"
;
import
{
ObjectId
}
from
"
mongoose
"
;
import
{
IUser
,
Role
,
Post
,
User
,
Avatar
}
from
"
../models
"
;
import
fs
from
"
fs
"
;
export
const
createUser
=
async
(
user
:
IUser
)
=>
{
// 비밀번호 암호화
...
...
@@ -87,3 +88,15 @@ export const postPicture = async (
});
}
};
export
const
deleteUser
=
async
(
userId
:
ObjectId
)
=>
{
const
user
=
await
User
.
findById
(
userId
);
if
(
!
(
user
?.
avatar
===
undefined
))
{
const
ref
=
await
Avatar
.
findById
(
user
.
avatar
.
_id
);
fs
.
unlink
(
"
../travel/uploads/
"
+
ref
?.
newfilename
,
(
err
)
=>
{
console
.
log
(
err
);
});
await
Avatar
.
deleteOne
({
_id
:
user
.
avatar
.
_id
});
await
User
.
deleteOne
({
_id
:
userId
});
}
};
src/routes/profile.route.ts
View file @
48441161
...
...
@@ -8,4 +8,6 @@ router
.
get
(
authCtrl
.
requireLogin
,
userCtrl
.
getProfile
)
.
post
(
authCtrl
.
requireLogin
,
userCtrl
.
postPicture
);
//중간에 req쪽에 fields와 files 넣는 미들웨어 추가
router
.
route
(
"
/delete
"
).
post
(
authCtrl
.
requireLogin
,
userCtrl
.
deleteUser
);
export
default
router
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment