Refactor response handling in ViewAuth and BaseView to return only child element…

…s and include user permissions in login response
1 parent d1d75d58
from datetime import datetime from datetime import datetime
from click import group
import pytz import pytz
import sqlalchemy as sa import sqlalchemy as sa
from opensipkd.tools import as_timezone from opensipkd.tools import as_timezone
...@@ -147,6 +148,16 @@ class User(UserMixin, BaseModel, DefaultModel, Base): ...@@ -147,6 +148,16 @@ class User(UserMixin, BaseModel, DefaultModel, Base):
qry = cls.query_list() qry = cls.query_list()
return qry.all() return qry.all()
def get_permissions(self):
groups = UserGroup.get_by_user(self)
perm_names=[]
for g in groups:
group_permissions = DBSession.query(GroupPermission).filter_by(group_id=g).all()
for gp in group_permissions:
if gp.perm_name not in perm_names:
perm_names.append(gp.perm_name)
return perm_names
# @classmethod # @classmethod
# def get_departemen_id(cls, user_id): # def get_departemen_id(cls, user_id):
# partner = Partner.query_user_id(user_id).first() # partner = Partner.query_user_id(user_id).first()
......
...@@ -229,7 +229,6 @@ class BaseView(object): ...@@ -229,7 +229,6 @@ class BaseView(object):
for k, v in value.items(): for k, v in value.items():
if type(v) in (colander.null, colander._null): if type(v) in (colander.null, colander._null):
value[k] = "" value[k] = ""
return children
d = { d = {
"id": field.oid, "id": field.oid,
"name": field.name, "name": field.name,
...@@ -597,7 +596,7 @@ class BaseView(object): ...@@ -597,7 +596,7 @@ class BaseView(object):
if self.req.is_xhr: if self.req.is_xhr:
d = self.form2dict(form) d = self.form2dict(form)
import json import json
return Response(json=d) return Response(json=d["children"])
resources = form.get_widget_resources() resources = form.get_widget_resources()
readonly = "readonly" in kwargs and kwargs["readonly"] or False readonly = "readonly" in kwargs and kwargs["readonly"] or False
......
...@@ -225,7 +225,7 @@ class ViewAuth(BaseView): ...@@ -225,7 +225,7 @@ class ViewAuth(BaseView):
set_user_log(msg, request, log, identity) set_user_log(msg, request, log, identity)
if self.req.is_xhr: if self.req.is_xhr:
d = self.form2dict(e.field) d = self.form2dict(e.field)
return Response(json=d) return Response(json=d["children"])
request.session.flash(msg, 'error') request.session.flash(msg, 'error')
return HTTPFound(location=request.route_url('base-login')) return HTTPFound(location=request.route_url('base-login'))
...@@ -279,7 +279,8 @@ class ViewAuth(BaseView): ...@@ -279,7 +279,8 @@ class ViewAuth(BaseView):
request.session.flash(str(e), "error") request.session.flash(str(e), "error")
if self.req.is_xhr: if self.req.is_xhr:
# return Response(form.render()) # return Response(form.render())
return Response(json=self.form2dict(form)) d = self.form2dict(form)
return Response(json=d["children"])
return render_to_response( return render_to_response(
login_tpl, dict( login_tpl, dict(
form=form, form=form,
...@@ -302,7 +303,10 @@ class ViewAuth(BaseView): ...@@ -302,7 +303,10 @@ class ViewAuth(BaseView):
# next_url=next_url, # next_url=next_url,
# login=login, ) # login=login, )
if self.req.is_xhr: if self.req.is_xhr:
return Response(json=self.form2dict(form)) d = self.form2dict(form)
d = d["children"]
# d["permission"]=user.get_permissions()
return Response(json=d)
if login_tpl: if login_tpl:
return render_to_response( return render_to_response(
...@@ -353,8 +357,11 @@ def redirect_login(request, user): ...@@ -353,8 +357,11 @@ def redirect_login(request, user):
request.session.flash("Sukses Login") request.session.flash("Sukses Login")
next_url = request.params.get('next') next_url = request.params.get('next')
if request.is_xhr: if request.is_xhr:
return Response(json={"success": True, return Response(json={
"token": user.security_code}, headerlist=headers) "success": True,
"permission": user.get_permissions(),
"token": user.security_code
}, headerlist=headers)
if not next_url and request.matched_route.name == 'login': if not next_url and request.matched_route.name == 'login':
url = get_params('modules_default', 'base-home') url = get_params('modules_default', 'base-home')
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!