mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-12 12:22:13 +00:00
[shibboleth] Fix empty role quota issue which will cause page unavailable
This commit is contained in:
parent
93dae41ca5
commit
e30d19c791
@ -1,3 +1,5 @@
|
|||||||
|
import logging
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.middleware import RemoteUserMiddleware
|
from django.contrib.auth.middleware import RemoteUserMiddleware
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
@ -14,6 +16,9 @@ from seahub.profile.models import Profile
|
|||||||
from seahub.utils.file_size import get_quota_from_string
|
from seahub.utils.file_size import get_quota_from_string
|
||||||
from seahub.utils.user_permissions import get_user_role
|
from seahub.utils.user_permissions import get_user_role
|
||||||
|
|
||||||
|
# Get an instance of a logger
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class ShibbolethRemoteUserMiddleware(RemoteUserMiddleware):
|
class ShibbolethRemoteUserMiddleware(RemoteUserMiddleware):
|
||||||
"""
|
"""
|
||||||
@ -35,7 +40,7 @@ class ShibbolethRemoteUserMiddleware(RemoteUserMiddleware):
|
|||||||
|
|
||||||
#To support logout. If this variable is True, do not
|
#To support logout. If this variable is True, do not
|
||||||
#authenticate user and return now.
|
#authenticate user and return now.
|
||||||
if request.session.get(LOGOUT_SESSION_KEY) == True:
|
if request.session.get(LOGOUT_SESSION_KEY) is True:
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
#Delete the shib reauth session key if present.
|
#Delete the shib reauth session key if present.
|
||||||
@ -84,6 +89,7 @@ class ShibbolethRemoteUserMiddleware(RemoteUserMiddleware):
|
|||||||
# call make profile.
|
# call make profile.
|
||||||
self.make_profile(user, shib_meta)
|
self.make_profile(user, shib_meta)
|
||||||
user_role = self.update_user_role(user, shib_meta)
|
user_role = self.update_user_role(user, shib_meta)
|
||||||
|
if user_role:
|
||||||
self.update_user_quota(user, user_role)
|
self.update_user_quota(user, user_role)
|
||||||
#setup session.
|
#setup session.
|
||||||
self.setup_session(request)
|
self.setup_session(request)
|
||||||
@ -169,6 +175,7 @@ class ShibbolethRemoteUserMiddleware(RemoteUserMiddleware):
|
|||||||
def update_user_quota(self, user, user_role):
|
def update_user_quota(self, user, user_role):
|
||||||
if user.permissions.role_quota():
|
if user.permissions.role_quota():
|
||||||
quota = get_quota_from_string(user.permissions.role_quota())
|
quota = get_quota_from_string(user.permissions.role_quota())
|
||||||
|
logger.info('Set quota[%d] for user: %s, role[%s]' % (quota, user.username, user_role))
|
||||||
seafile_api.set_role_quota(user_role, quota)
|
seafile_api.set_role_quota(user_role, quota)
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user