ckeditor upload 권한!

사이트를 배포하고 친구들에게 사용하면서 버그가 있으면 제보(?)해달라고 했다.

http://steamic.co.kr

그런데 바로 제보를…

그중에 게시글 이미지 업로드에 관련해서 적어본다.

게시글의 내용을 적는 부분은 ckeditor를 사용하고 있는데 테스트를 할 때는

관리자 권한을 가지고 있는 계정으로 진행했다.

해당 사이트는 스팀의 소셜 로그인을 할 수 있고 친구도 소셜 로그인을 사용했다.

처음에는 소셜 로그인과 관련된 문제인 줄 알았다.

그래서 django 자체의 로그인 기능을 이용해서 테스트 계정을 만든 다음에

이미지를 업로드했는데도 오류가 났다.

뭔가 ckeditor와 관련된 문제인 것 같아서 검색을 시작했고, 업로드와 관련해서

스태프의 권한을 가진 계정만 업로드할 수 있다는 정보를 찾았다.

설치된 ckeditor-uploader의 라이브러리를 찾아서 urls.py를 봤더니 다음과 같았다.

1
2
3
4
5
6
7
8
9
10
from django.conf.urls import url
from django.contrib.admin.views.decorators import staff_member_required
from django.views.decorators.cache import never_cache

from . import views

urlpatterns = [
url(r'^upload/', staff_member_required(views.upload), name='ckeditor_upload'),
url(r'^browse/', never_cache(staff_member_required(views.browse)), name='ckeditor_browse'),
]

staff_member_required를 볼 수 있다.

라이브러리 자체를 바꾸는 것은 문제가 되기 때문에 내 config/urls.py에

다음과 같이 추가해서 해결했다.

로그인한 사용자만 사용할 수 있게 login_required를 썼다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from django.contrib.auth.decorators import login_required
from django.views.decorators.cache import never_cache

from ckeditor_uploader import views

urlpatterns = [
path('ckeditor/upload/', login_required(views.upload), name='ckeditor_upload'),
path('ckeditor/browse/', login_required(never_cache((views.browse))), name='ckeditor_browse'),
]

urlpatterns += [
path('accounts/', include('allauth.urls')),
path('site_config/', admin.site.urls),
path('', include('main.urls')),
path('board/', include('board.urls')),
# path('ckeditor/', include('ckeditor_upload.urls')),
]

다음부터는 관리자 권한을 가진 계정과 일반 계정 모두 테스트를 확실하게 해봐야겠다.

Share