Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 0d5e7327
authored
Jun 14, 2022
by
aagusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
penyesuaian google client
1 parent
2b1eaed2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
35 additions
and
21 deletions
opensipkd/base/__init__.py
opensipkd/base/views/base_google.py
opensipkd/base/views/register_external.py
opensipkd/base/views/templates/base3.1.pt
opensipkd/base/views/templates/form_input.pt
opensipkd/base/views/templates/login.pt
opensipkd/base/views/templates/register.pt
opensipkd/base/views/user.py
opensipkd/base/views/user_login.py
opensipkd/base/__init__.py
View file @
0d5e732
...
@@ -116,16 +116,19 @@ def add_global(event):
...
@@ -116,16 +116,19 @@ def add_global(event):
event
[
'get_params'
]
=
get_params
event
[
'get_params'
]
=
get_params
def
get_params
(
params
,
alternate
=
None
):
def
get_params
(
params
,
alternate
=
None
,
settings
=
None
):
"""
"""
Digunakan untuk mengambil nilai dari konfigurasi sesuai params yang disebut
Digunakan untuk mengambil nilai dari konfigurasi sesuai params yang disebut
:param params: variable
:param params: variable
:param alternate: default apabila tidak ditemukan data/params
:param alternate: default apabila tidak ditemukan data/params
:param settings: default settings
:return: value
:return: value
contoh penggunaan:
contoh penggunaan:
get_params('devel', False)
get_params('devel', False)
"""
"""
settings
=
get_settings
()
if
not
settings
:
settings
=
get_settings
()
result
=
settings
and
params
in
settings
and
settings
[
params
]
.
strip
()
or
None
result
=
settings
and
params
in
settings
and
settings
[
params
]
.
strip
()
or
None
if
not
result
:
if
not
result
:
row
=
Parameter
.
query_kode
(
params
)
.
first
()
row
=
Parameter
.
query_kode
(
params
)
.
first
()
...
@@ -425,7 +428,8 @@ def main(global_config, **settings):
...
@@ -425,7 +428,8 @@ def main(global_config, **settings):
config
.
add_static_view
(
'deform_static'
,
'deform:static'
)
config
.
add_static_view
(
'deform_static'
,
'deform:static'
)
# config.add_static_view('files', get_params('static_files'))
# config.add_static_view('files', get_params('static_files'))
# Captcha
# Captcha
captcha_files
=
get_params
(
'captcha_files'
,
'/tmp/captcha'
)
captcha_files
=
get_params
(
'captcha_files'
,
settings
=
settings
,
alternate
=
"/tmp/captcha"
)
if
not
os
.
path
.
exists
(
captcha_files
):
if
not
os
.
path
.
exists
(
captcha_files
):
os
.
makedirs
(
captcha_files
)
os
.
makedirs
(
captcha_files
)
config
.
add_static_view
(
'captcha'
,
captcha_files
)
config
.
add_static_view
(
'captcha'
,
captcha_files
)
...
...
opensipkd/base/views/base_google.py
View file @
0d5e732
from
google.auth.transport
import
requests
from
google.auth.transport
import
requests
from
google.oauth2
import
id_token
from
google.oauth2
import
id_token
from
opensipkd.base
import
get_params
from
pyramid.view
import
(
view_config
,
)
from
pyramid.view
import
(
view_config
,
)
from
..models
import
User
from
..models
import
User
from
opensipkd.tools
import
get_settings
from
opensipkd.tools
import
get_settings
import
json
def
validate_user
(
request
,
idinfo
):
def
validate_user
(
request
,
idinfo
):
...
@@ -51,16 +53,21 @@ def googlesignin(request):
...
@@ -51,16 +53,21 @@ def googlesignin(request):
# (Receive token by HTTPS POST)
# (Receive token by HTTPS POST)
# ...
# ...
CLIENT_IDS
=
request
.
google_signin_client_ids
CLIENT_IDS
=
request
.
google_signin_client_ids
# CLIENT_IDS = get_params('google-signin-client-id')
KEY
=
get_params
(
'google-signin-client-secret'
)
# Specify the CLIENT_ID of the app that accesses the backend:
# Specify the CLIENT_ID of the app that accesses the backend:
# idinfo = id_token.verify_oauth2_token(token, requests.Request(), CLIENT_ID)
# idinfo = id_token.verify_oauth2_token(token, requests.Request(), CLIENT_ID)
# Or, if multiple clients access the backend server:
# Or, if multiple clients access the backend server:
gtoken
=
request
.
params
[
'id_token'
]
gtoken
=
json
.
loads
(
request
.
params
[
'id_token'
])
idinfo
=
id_token
.
verify_oauth2_token
(
gtoken
,
requests
.
Request
())
import
jwt
idinfo
=
jwt
.
decode
(
gtoken
[
"credential"
],
options
=
{
"verify_signature"
:
False
})
# KEY, algorithms=["RS256"]) #
# idinfo = id_token.verify_oauth2_token(gtoken, requests.Request())
if
idinfo
[
'aud'
]
not
in
CLIENT_IDS
:
if
idinfo
[
'aud'
]
not
in
CLIENT_IDS
:
raise
ValueError
(
'Could not verify audience.'
)
raise
ValueError
(
'Could not verify audience.'
)
if
idinfo
[
'iss'
]
not
in
[
'accounts.google.com'
,
'https://accounts.google.com'
]:
if
idinfo
[
'iss'
]
not
in
[
'accounts.google.com'
,
'https://accounts.google.com'
]:
raise
ValueError
(
'Wrong issuer.'
)
raise
ValueError
(
'Wrong issuer.'
)
return
idinfo
return
idinfo
opensipkd/base/views/register_external.py
View file @
0d5e732
...
@@ -180,7 +180,7 @@ def get_form(request, class_form, buttons=None, validator=form_validator):
...
@@ -180,7 +180,7 @@ def get_form(request, class_form, buttons=None, validator=form_validator):
return
Form
(
schema
,
buttons
=
(
'batal'
,
'simpan'
))
return
Form
(
schema
,
buttons
=
(
'batal'
,
'simpan'
))
def
save
(
values
,
user
=
None
,
row
=
None
):
def
save
(
values
,
user
=
None
,
row
=
None
,
request
=
None
):
"""
"""
Digunakan untuk menyimpan User External
Digunakan untuk menyimpan User External
:param values: dictionary of
:param values: dictionary of
...
@@ -198,7 +198,7 @@ def save(values, user=None, row=None):
...
@@ -198,7 +198,7 @@ def save(values, user=None, row=None):
if
not
user
:
if
not
user
:
user_
=
dict
(
user_name
=
values
[
'external_user_name'
],
user_
=
dict
(
user_name
=
values
[
'external_user_name'
],
email
=
values
[
'external_email'
])
email
=
values
[
'external_email'
])
user
,
remail
=
save_user
(
user_
)
user
,
remail
=
save_user
(
request
,
user_
)
if
not
row
:
if
not
row
:
row
=
ExternalIdentity
()
row
=
ExternalIdentity
()
...
@@ -222,9 +222,9 @@ def save_request(values, request, row=None):
...
@@ -222,9 +222,9 @@ def save_request(values, request, row=None):
user
=
ExternalIdentityService
.
user_by_external_id_and_provider
(
user
=
ExternalIdentityService
.
user_by_external_id_and_provider
(
id_info
[
'sub'
],
id_info
[
'iss'
])
id_info
[
'sub'
],
id_info
[
'iss'
])
if
not
user
:
if
not
user
:
user
=
save
(
values
,
user
,
row
)
user
=
save
(
values
,
user
,
row
,
request
)
partner
=
Partner
.
query_
user_id
(
user
.
id
)
.
first
()
partner
=
Partner
.
query_
email
(
id_info
[
'email'
]
)
.
first
()
# if not partner:
# if not partner:
values
[
'email'
]
=
id_info
[
'email'
]
values
[
'email'
]
=
id_info
[
'email'
]
if
'kode'
not
in
values
and
not
values
[
'kode'
]:
if
'kode'
not
in
values
and
not
values
[
'kode'
]:
...
@@ -280,7 +280,7 @@ class RegistrasiExternal(BaseView):
...
@@ -280,7 +280,7 @@ class RegistrasiExternal(BaseView):
values
[
'primari'
][
'email'
]
=
id_info
[
'email'
]
values
[
'primari'
][
'email'
]
=
id_info
[
'email'
]
# values['detail']['captcha']
# values['detail']['captcha']
form
.
set_appstruct
(
values
)
form
.
set_appstruct
(
values
)
return
dict
(
form
=
form
,
captcha
=
get_captcha
(
request
))
return
dict
(
form
=
form
,
captcha
=
get_captcha
(
request
)
,
scripts
=
""
)
dicts
=
dict
(
controls
)
dicts
=
dict
(
controls
)
values
=
dicts
[
'primari'
]
values
=
dicts
[
'primari'
]
...
@@ -317,7 +317,9 @@ class RegistrasiExternal(BaseView):
...
@@ -317,7 +317,9 @@ class RegistrasiExternal(BaseView):
values
[
'secondari'
]
.
update
(
partner
.
to_dict
())
values
[
'secondari'
]
.
update
(
partner
.
to_dict
())
form
.
set_appstruct
(
values
)
form
.
set_appstruct
(
values
)
return
dict
(
form
=
form
,
captcha
=
get_captcha
(
request
))
# return dict()
# return dict(captcha=get_captcha(request))
return
dict
(
form
=
form
.
render
(),
captcha
=
get_captcha
(
request
),
scripts
=
""
)
@view_config
(
route_name
=
'profile-external'
,
renderer
=
'templates/register.pt'
,
@view_config
(
route_name
=
'profile-external'
,
renderer
=
'templates/register.pt'
,
permission
=
'view'
)
permission
=
'view'
)
...
...
opensipkd/base/views/templates/base3.1.pt
View file @
0d5e732
This diff is collapsed.
Click to expand it.
opensipkd/base/views/templates/form_input.pt
View file @
0d5e732
...
@@ -22,9 +22,8 @@
...
@@ -22,9 +22,8 @@
$
{
structure
:
scripts
}
$
{
structure
:
scripts
}
});
});
</script>
</script>
<div
metal:define-slot=
"scripts"
>
<div
metal:define-slot=
"scripts"
></div>
</div>
</div>
</div>
</html>
</html>
opensipkd/base/views/templates/login.pt
View file @
0d5e732
This diff is collapsed.
Click to expand it.
opensipkd/base/views/templates/register.pt
View file @
0d5e732
<html
metal:use-macro=
"load: form_input.pt"
>
<html
metal:use-macro=
"load: form_input.pt"
tal:define=
"home request.route_url('home')[:-1];"
>
<div
metal:fill-slot=
"scripts"
>
<div
metal:fill-slot=
"scripts"
>
<script>
<script>
$
(
document
).
ready
(
function
()
{
$
(
document
).
ready
(
function
()
{
...
@@ -11,7 +13,6 @@
...
@@ -11,7 +13,6 @@
});
});
});
});
});
});
</script>
</script>
</div>
</div>
...
...
opensipkd/base/views/user.py
View file @
0d5e732
...
@@ -6,6 +6,7 @@ import transaction
...
@@ -6,6 +6,7 @@ import transaction
from
datatables
import
(
ColumnDT
,
DataTables
,
)
from
datatables
import
(
ColumnDT
,
DataTables
,
)
from
deform
import
(
Form
,
widget
,
ValidationFailure
,
Button
,
)
from
deform
import
(
Form
,
widget
,
ValidationFailure
,
Button
,
)
# from sqlalchemy.exc import IntegrityErrortpl
# from sqlalchemy.exc import IntegrityErrortpl
from
sqlalchemy.exc
import
IntegrityError
from
opensipkd.tools
import
create_now
from
opensipkd.tools
import
create_now
from
opensipkd.tools.buttons
import
btn_cancel
,
btn_save
,
btn_close
from
opensipkd.tools.buttons
import
btn_cancel
,
btn_save
,
btn_close
...
...
opensipkd/base/views/user_login.py
View file @
0d5e732
...
@@ -122,23 +122,23 @@ def view_login(request):
...
@@ -122,23 +122,23 @@ def view_login(request):
return
r
return
r
elif
"provider_name"
in
request
.
params
and
request
.
params
[
"provider_name"
]:
elif
"provider_name"
in
request
.
params
and
request
.
params
[
"provider_name"
]:
# checking jika mengggunakan openid seperti google atau facebook
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
# user = googlesignin(request)
# user = googlesignin(request)
id_info
=
googlesignin
(
request
)
request
.
session
[
"id_info"
]
=
id_info
try
:
try
:
id_info
=
googlesignin
(
request
)
pass
request
.
session
[
"id_info"
]
=
id_info
except
ValueError
as
e
:
except
ValueError
as
e
:
request
.
session
.
flash
(
e
,
'error'
)
request
.
session
.
flash
(
e
,
'error'
)
raise
HTTPNotFound
raise
HTTPNotFound
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'
])
if
id_info
and
not
user
:
if
id_info
and
not
user
:
request
.
session
.
flash
(
'Silahkan Melakukan Registrasi'
)
request
.
session
.
flash
(
'Silahkan Melakukan Registrasi'
)
return
HTTPFound
(
location
=
request
.
route_url
(
'register-external'
))
return
HTTPFound
(
location
=
request
.
route_url
(
'register-external'
))
...
...
Write
Preview
Markdown
is supported
Attach a file
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 post a comment