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 f08d1cd8
authored
Jun 14, 2022
by
aagusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
google sign in
1 parent
d8ec7e78
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
47 additions
and
20 deletions
opensipkd/base/security.py
opensipkd/base/views/base_views.py
opensipkd/base/views/user_login.py
opensipkd/base/security.py
View file @
f08d1cd
...
@@ -3,13 +3,19 @@ from .models import (
...
@@ -3,13 +3,19 @@ from .models import (
User
,
User
,
UserGroup
,
UserGroup
,
DBSession
,
DBSession
,
)
)
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
# It is used by RootFactory
# It is used by RootFactory
def
group_finder
(
user_id
,
request
):
def
group_finder
(
user_id
,
request
):
q
=
DBSession
.
query
(
User
)
.
filter_by
(
id
=
user_id
)
if
user_id
!=
'None'
:
user
=
q
.
first
()
q
=
DBSession
.
query
(
User
)
.
filter_by
(
id
=
user_id
)
user
=
q
.
first
()
else
:
user
=
None
if
not
user
or
not
user
.
status
:
if
not
user
or
not
user
.
status
:
log
.
info
(
"User tidak ditemukan"
)
log
.
info
(
"User tidak ditemukan"
)
return
[]
return
[]
...
...
opensipkd/base/views/base_views.py
View file @
f08d1cd
...
@@ -114,10 +114,18 @@ class BaseView(object):
...
@@ -114,10 +114,18 @@ class BaseView(object):
self
.
home
=
self
.
req
.
route_url
(
'home'
)[:
-
1
]
self
.
home
=
self
.
req
.
route_url
(
'home'
)[:
-
1
]
self
.
form_validator
=
None
self
.
form_validator
=
None
self
.
buttons
=
None
self
.
headers
=
None
def
route_list
(
self
,
msg
=
None
,
error
=
""
):
def
route_list
(
self
,
msg
=
None
,
error
=
""
):
if
msg
:
if
msg
:
self
.
ses
.
flash
(
msg
,
error
)
self
.
ses
.
flash
(
msg
,
error
)
return
HTTPFound
(
location
=
self
.
req
.
route_url
(
self
.
list_route
))
if
self
.
headers
:
return
HTTPFound
(
location
=
self
.
req
.
route_url
(
self
.
list_route
),
headers
=
self
.
headers
)
else
:
return
HTTPFound
(
location
=
self
.
req
.
route_url
(
self
.
list_route
))
def
form_validator
(
self
,
form
,
value
):
def
form_validator
(
self
,
form
,
value
):
pass
pass
...
@@ -126,12 +134,15 @@ class BaseView(object):
...
@@ -126,12 +134,15 @@ class BaseView(object):
return
get_params
(
params
)
return
get_params
(
params
)
def
get_form
(
self
,
class_form
,
row
=
None
,
buttons
=
(
btn_save
,
btn_cancel
),
**
bindings
):
def
get_form
(
self
,
class_form
,
row
=
None
,
buttons
=
(
btn_save
,
btn_cancel
),
**
bindings
):
if
self
.
buttons
:
buttons
=
self
.
buttons
schema
=
class_form
(
validator
=
self
.
form_validator
)
schema
=
class_form
(
validator
=
self
.
form_validator
)
schema
=
schema
.
bind
(
request
=
self
.
req
,
schema
=
schema
.
bind
(
request
=
self
.
req
,
row
=
row
,
**
bindings
)
**
bindings
)
schema
.
request
=
self
.
req
schema
.
request
=
self
.
req
if
row
:
#
if row:
schema
.
deserialize
(
row
)
#
schema.deserialize(row)
return
Form
(
schema
,
buttons
=
buttons
)
return
Form
(
schema
,
buttons
=
buttons
)
def
session_failed
(
self
,
session_name
):
def
session_failed
(
self
,
session_name
):
...
@@ -158,6 +169,9 @@ class BaseView(object):
...
@@ -158,6 +169,9 @@ class BaseView(object):
table
=
self
.
get_item_table
(
row
)
table
=
self
.
get_item_table
(
row
)
return
dict
(
form
=
form
.
render
(
readonly
=
True
),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
)
return
dict
(
form
=
form
.
render
(
readonly
=
True
),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
)
def
before_add
(
self
,
form
):
return
form
def
view_add
(
self
):
def
view_add
(
self
):
bindings
=
self
.
get_bindings
()
bindings
=
self
.
get_bindings
()
form
=
self
.
get_form
(
self
.
add_schema
,
**
bindings
)
form
=
self
.
get_form
(
self
.
add_schema
,
**
bindings
)
...
@@ -171,6 +185,7 @@ class BaseView(object):
...
@@ -171,6 +185,7 @@ class BaseView(object):
return
dict
(
form
=
form
.
render
(),
scripts
=
self
.
form_scripts
)
return
dict
(
form
=
form
.
render
(),
scripts
=
self
.
form_scripts
)
self
.
save_request
(
dict
(
controls
))
self
.
save_request
(
dict
(
controls
))
return
self
.
route_list
()
return
self
.
route_list
()
form
=
self
.
before_add
(
form
)
table
=
self
.
get_item_table
()
table
=
self
.
get_item_table
()
return
dict
(
form
=
form
.
render
(),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
)
return
dict
(
form
=
form
.
render
(),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
)
...
@@ -184,10 +199,10 @@ class BaseView(object):
...
@@ -184,10 +199,10 @@ class BaseView(object):
if
not
row
:
if
not
row
:
row
=
self
.
table
()
row
=
self
.
table
()
row
.
created
=
datetime
.
now
()
row
.
created
=
datetime
.
now
()
row
.
create_uid
=
user
.
id
row
.
create_uid
=
user
and
user
.
id
or
None
else
:
else
:
row
.
updated
=
datetime
.
now
()
row
.
updated
=
datetime
.
now
()
row
.
update_uid
=
user
.
id
row
.
update_uid
=
user
and
user
.
id
or
None
row
.
from_dict
(
values
)
row
.
from_dict
(
values
)
row
.
status
=
'status'
in
values
and
values
[
'status'
]
and
1
or
0
row
.
status
=
'status'
in
values
and
values
[
'status'
]
and
1
or
0
...
@@ -225,6 +240,8 @@ class BaseView(object):
...
@@ -225,6 +240,8 @@ class BaseView(object):
def
get_item_table
(
self
,
row
=
None
):
def
get_item_table
(
self
,
row
=
None
):
return
None
return
None
def
before_edit
(
self
,
form
):
return
form
def
view_edit
(
self
):
def
view_edit
(
self
):
request
=
self
.
req
request
=
self
.
req
...
@@ -246,6 +263,7 @@ class BaseView(object):
...
@@ -246,6 +263,7 @@ class BaseView(object):
return
self
.
route_list
()
return
self
.
route_list
()
values
=
self
.
get_values
(
row
)
values
=
self
.
get_values
(
row
)
form
.
set_appstruct
(
values
)
form
.
set_appstruct
(
values
)
form
=
self
.
before_edit
(
form
)
table
=
self
.
get_item_table
(
row
)
table
=
self
.
get_item_table
(
row
)
return
dict
(
form
=
form
.
render
(),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
)
return
dict
(
form
=
form
.
render
(),
table
=
table
and
table
.
render
()
or
None
,
scripts
=
self
.
form_scripts
)
...
...
opensipkd/base/views/user_login.py
View file @
f08d1cd
...
@@ -64,7 +64,7 @@ def view_login(request):
...
@@ -64,7 +64,7 @@ def view_login(request):
next_url
=
request
.
params
.
get
(
'next'
,
request
.
referrer
)
next_url
=
request
.
params
.
get
(
'next'
,
request
.
referrer
)
login_tpl
=
get_params
(
'login_tpl'
,
'templates/login.pt'
)
login_tpl
=
get_params
(
'login_tpl'
,
'templates/login.pt'
)
if
not
next_url
:
if
not
next_url
:
next_url
=
request
.
route_url
(
'home'
)
# get_params('_host')+
next_url
=
request
.
route_url
(
'home'
)
# get_params('_host')+
if
request
.
authenticated_userid
:
# (request):
if
request
.
authenticated_userid
:
# (request):
request
.
session
.
flash
(
'Anda sudah login'
,
'error'
)
request
.
session
.
flash
(
'Anda sudah login'
,
'error'
)
...
@@ -108,13 +108,14 @@ def view_login(request):
...
@@ -108,13 +108,14 @@ def view_login(request):
msg
=
"Login Gagal"
msg
=
"Login Gagal"
set_user_log
(
msg
,
request
,
log
,
identity
)
set_user_log
(
msg
,
request
,
log
,
identity
)
request
.
session
.
flash
(
msg
,
"error"
)
request
.
session
.
flash
(
msg
,
"error"
)
next_url
=
f
"{request.route_url('login')}?next={next_url}"
next_url
=
f
"{request.route_url('login')}?next={next_url}"
return
HTTPFound
(
location
=
next_url
)
return
HTTPFound
(
location
=
next_url
)
return
redirect_login
(
request
,
user
)
return
redirect_login
(
request
,
user
)
elif
'register'
in
request
.
POST
:
elif
'register'
in
request
.
POST
:
return
HTTPFound
(
location
=
request
.
route_url
(
"register"
))
register_form
=
get_params
(
"register_form"
,
'register-external'
)
return
HTTPFound
(
location
=
request
.
route_url
(
register_form
))
elif
'login failed'
in
request
.
session
:
elif
'login failed'
in
request
.
session
:
r
=
dict
(
form
=
request
.
session
[
'login failed'
])
r
=
dict
(
form
=
request
.
session
[
'login failed'
])
...
@@ -125,6 +126,7 @@ def view_login(request):
...
@@ -125,6 +126,7 @@ def view_login(request):
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
)
id_info
=
googlesignin
(
request
)
request
.
session
[
"id_info"
]
=
id_info
request
.
session
[
"id_info"
]
=
id_info
...
@@ -138,21 +140,22 @@ def view_login(request):
...
@@ -138,21 +140,22 @@ def view_login(request):
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'
))
register_form
=
get_params
(
"register_form"
,
'register-external'
)
headers
=
[(
"id_info"
,
str
(
id_info
))]
return
HTTPFound
(
location
=
request
.
route_url
(
register_form
,
_query
=
id_info
),
detail
=
id_info
)
if
user
:
if
user
:
return
redirect_login
(
request
,
user
)
return
redirect_login
(
request
,
user
)
message
=
""
message
=
""
login
=
""
login
=
""
return
render_to_response
(
login_tpl
,
return
render_to_response
(
login_tpl
,
dict
(
form
=
form
.
render
(),
dict
(
form
=
form
.
render
(),
message
=
message
,
message
=
message
,
url
=
request
.
route_url
(
'login'
),
url
=
request
.
route_url
(
'login'
),
next_url
=
next_url
,
next_url
=
next_url
,
login
=
login
,
),
login
=
login
,
),
request
=
request
)
request
=
request
)
# return dict(
# return dict(
...
@@ -167,7 +170,7 @@ def redirect_login(request, user):
...
@@ -167,7 +170,7 @@ def redirect_login(request, user):
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'
,
'home'
)
url
=
get_params
(
'modules_default'
,
'home'
)
return
HTTPFound
(
location
=
request
.
route_url
(
url
),
return
HTTPFound
(
location
=
request
.
route_url
(
url
),
headers
=
headers
)
headers
=
headers
)
return
HTTPFound
(
location
=
next_url
,
headers
=
headers
)
return
HTTPFound
(
location
=
next_url
,
headers
=
headers
)
...
...
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