Commit 60f430fb by aagusti

perbaikan save partner

1 parent 10d403fb
...@@ -226,6 +226,7 @@ class ViewPartner(BaseView): ...@@ -226,6 +226,7 @@ class ViewPartner(BaseView):
def save_request(self, values, row=None): def save_request(self, values, row=None):
if "idcard" in values and values["idcard"]: if "idcard" in values and values["idcard"]:
if str(self.req.POST[ 'upload'])!="":
folder = self.get_params("idcard_folder", '/tmp/idcard') folder = self.get_params("idcard_folder", '/tmp/idcard')
upload = Upload(folder) upload = Upload(folder)
file_name = upload.save(self.req, 'upload', img_exts) file_name = upload.save(self.req, 'upload', img_exts)
......
...@@ -376,42 +376,42 @@ class Registrasi(BaseView): ...@@ -376,42 +376,42 @@ class Registrasi(BaseView):
DBSession.flush() DBSession.flush()
data = dict(email=row.email) data = dict(email=row.email)
if 'id_info' in self.ses and self.ses['id_info']: # if 'id_info' in self.ses and self.ses['id_info']:
id_info = self.ses["id_info"] # id_info = self.ses["id_info"]
values['email'] = id_info['email'] # values['email'] = id_info['email']
values['external_id'] = id_info['sub'] # values['external_id'] = id_info['sub']
values['external_user_name'] = id_info["name"] # values['external_user_name'] = id_info["name"]
values['external_email'] = id_info["email"] # values['external_email'] = id_info["email"]
values['provider_name'] = id_info["iss"] # values['provider_name'] = id_info["iss"]
# todo: what is this???? # # todo: what is this????
# values['access_token'] # # values['access_token']
# values['alt_token'] # # values['alt_token']
# values['token_secret'] # # values['token_secret']
values["local_user_id"] = row.id # values["local_user_id"] = row.id
external = ExternalIdentity() # external = ExternalIdentity()
external.from_dict(values) # external.from_dict(values)
DBSession.add(external) # DBSession.add(external)
DBSession.flush() # DBSession.flush()
if need_verify(): # if need_verify():
send_email_pending(self.req, row, 'Welcome new user', # send_email_pending(self.req, row, 'Welcome new user',
'email-new-user', # 'email-new-user',
'email-pending.tpl') # 'email-pending.tpl')
ts = _( # ts = _(
'user-added', # 'user-added',
default='${email} berhasil ditambahkan tunggu hasil verifikasi data ', # default='${email} berhasil ditambahkan tunggu hasil verifikasi data ',
mapping=data) # mapping=data)
#
else: # else:
row.status = 1 # row.status = 1
DBSession.add(row) # DBSession.add(row)
self.ses.flash('Registrasi Sukses.') # self.ses.flash('Registrasi Sukses.')
DBSession.flush() # DBSession.flush()
self.headers = get_login_headers(self.req, row) # self.headers = get_login_headers(self.req, row)
ts = _( # ts = _(
'user-added', # 'user-added',
default='${email} berhasil ditambahkan ', # default='${email} berhasil ditambahkan ',
mapping=data) # mapping=data)
else: # Kirim email validasi # else: # Kirim email validasi
# todo validasi dan perubahan profile # todo validasi dan perubahan profile
remain = regenerate_security_code(row) remain = regenerate_security_code(row)
send_email_security_code( send_email_security_code(
......
...@@ -20,7 +20,7 @@ Perubahan Mendasar dari fungsi login adalah: ...@@ -20,7 +20,7 @@ Perubahan Mendasar dari fungsi login adalah:
result object dari fungsi tersebut harus berupa class User() result object dari fungsi tersebut harus berupa class User()
""" """
import os import os
from datetime import timedelta from datetime import timedelta, datetime
from importlib import import_module from importlib import import_module
import colander import colander
...@@ -36,7 +36,7 @@ from ziggurat_foundations.models.services.external_identity import \ ...@@ -36,7 +36,7 @@ from ziggurat_foundations.models.services.external_identity import \
from ziggurat_foundations.models.services.user import UserService from ziggurat_foundations.models.services.user import UserService
from opensipkd.base import DBSession, get_params from opensipkd.base import DBSession, get_params
from opensipkd.models import User, ExternalIdentity from opensipkd.models import User, ExternalIdentity, Partner
from opensipkd.tools import create_now, set_user_log, get_settings from opensipkd.tools import create_now, set_user_log, get_settings
from opensipkd.base.views import _, one_hour, two_minutes, BaseView from opensipkd.base.views import _, one_hour, two_minutes, BaseView
from pyramid_mailer.message import Message from pyramid_mailer.message import Message
...@@ -156,8 +156,8 @@ class ViewLogin(BaseView): ...@@ -156,8 +156,8 @@ class ViewLogin(BaseView):
del request.session['login failed'] del request.session['login failed']
return r return r
elif "provider_name" in request.params and request.params[ elif "provider_name" in request.params and \
"provider_name"]: request.params["provider_name"]:
provider_name = request.params["provider_name"] provider_name = request.params["provider_name"]
if provider_name == "google": if provider_name == "google":
from .base_google import googlesignin from .base_google import googlesignin
...@@ -166,11 +166,11 @@ class ViewLogin(BaseView): ...@@ -166,11 +166,11 @@ class ViewLogin(BaseView):
except Exception as e: except Exception as e:
login = "" login = ""
request.session.flash(str(e), "error") request.session.flash(str(e), "error")
return render_to_response(login_tpl, return render_to_response(
dict(form=form.render(), login_tpl, dict(
form=form.render(),
message=message, message=message,
url=request.route_url( url=request.route_url('login'),
'login'),
next_url=next_url, next_url=next_url,
login=login, ), login=login, ),
request=request) request=request)
...@@ -178,20 +178,55 @@ class ViewLogin(BaseView): ...@@ -178,20 +178,55 @@ class ViewLogin(BaseView):
request.session["id_info"] = id_info request.session["id_info"] = id_info
else: else:
id_info = None id_info = None
user = id_info and ExternalIdentityService. \ user = id_info and ExternalIdentityService. \
user_by_external_id_and_provider(id_info['sub'], id_info['iss']) user_by_external_id_and_provider(id_info['sub'], id_info['iss'])
log.debug("Users : %s", user)
log.debug("IdInfo : %s", id_info)
if id_info and not user: if id_info and not user:
request.session.flash('Silahkan Melakukan Registrasi') # Proses Register user
register_form = get_params("register_form", 'register') # Cek Data di user dan partner
return HTTPFound(location=request.route_url(register_form)) # Jika sudah ada user login klasik pake user password
# Simpan ke table user dan external identity
values = {'email': id_info['email'],
"user_name": id_info["email"],
"status": 1,
"registered_date": datetime.now()}
user = User.get_by_identity(values.get("email"))
partner = Partner.query_email(values.get("email")).first()
log.debug("User : %s", user)
log.debug("Partner : %s", partner)
if user or partner:
request.session.flash(
"Email sudah terdaftar silahkan login standard",
'error')
return HTTPFound(location=request.route_url('login'))
user = User()
user.from_dict(values)
DBSession.add(user)
DBSession.flush()
DBSession.refresh(user)
values = {'external_id': id_info['sub'],
'external_user_name': id_info["name"],
'external_email': id_info["email"],
'provider_name': id_info["iss"],
"local_user_id": user.id,
"status": 1}
external = ExternalIdentity()
external.from_dict(values)
DBSession.add(external)
DBSession.flush()
# # todo: what is this????
# # values['access_token']
# # values['alt_token']
# # values['token_secret']
if user and user.status == 1: if user and user.status == 1:
return redirect_login(request, user) return redirect_login(request, user)
else: else:
message = "User anda masih menunggu verifikasi atau lagi di blokir" message = "User anda masih menunggu verifikasi atau lagi di blokir"
request.session.flash(message, "error") request.session.flash(message, "error")
login = "" login = ""
if login_tpl == 'templates/login.pt': if login_tpl == 'templates/login.pt':
return dict(form=form.render(), return dict(form=form.render(),
...@@ -234,6 +269,7 @@ class LogoutSchema(colander.Schema): ...@@ -234,6 +269,7 @@ class LogoutSchema(colander.Schema):
btn_logout = Button("logout", css_class="btn-danger") btn_logout = Button("logout", css_class="btn-danger")
btn_home = Button("home", css_class="btn-success") btn_home = Button("home", css_class="btn-success")
class Logout(BaseView): class Logout(BaseView):
@view_config(route_name='logout', renderer="templates/logout.pt") @view_config(route_name='logout', renderer="templates/logout.pt")
def view_logout(self): def view_logout(self):
...@@ -242,7 +278,7 @@ class Logout(BaseView): ...@@ -242,7 +278,7 @@ class Logout(BaseView):
if "g_state" in request.cookies: if "g_state" in request.cookies:
request.response.delete_cookie("g_state", '/') request.response.delete_cookie("g_state", '/')
form = self.get_form(LogoutSchema, buttons=(btn_cancel, btn_logout )) form = self.get_form(LogoutSchema, buttons=(btn_cancel, btn_logout))
if 'cancel' in request.POST or "home" in request.POST: if 'cancel' in request.POST or "home" in request.POST:
log.info(request.route_url('home')) log.info(request.route_url('home'))
return HTTPFound(location=f"{request.route_url('home')}", ) return HTTPFound(location=f"{request.route_url('home')}", )
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!