Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
douban-api-proxy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
douban-api-proxy
Commits
38f3c2d5
Commit
38f3c2d5
authored
Jul 21, 2019
by
Ozzieisaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reenabled multiple oauth provider
deleted duplicate download counting function
parent
c6542fde
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
84 additions
and
166 deletions
+84
-166
admin.py
cps/admin.py
+21
-12
comic.py
cps/comic.py
+1
-1
config_sql.py
cps/config_sql.py
+1
-14
constants.py
cps/constants.py
+2
-2
helper.py
cps/helper.py
+0
-9
oauth.py
cps/oauth.py
+9
-8
oauth_bb.py
cps/oauth_bb.py
+35
-96
config_edit.html
cps/templates/config_edit.html
+4
-4
user_edit.html
cps/templates/user_edit.html
+4
-4
ub.py
cps/ub.py
+2
-11
uploader.py
cps/uploader.py
+5
-5
No files found.
cps/admin.py
View file @
38f3c2d5
...
@@ -344,18 +344,27 @@ def _configuration_update_helper():
...
@@ -344,18 +344,27 @@ def _configuration_update_helper():
_config_int
(
"config_updatechannel"
)
_config_int
(
"config_updatechannel"
)
# GitHub OAuth configuration
# GitHub OAuth configuration
if
config
.
config_login_type
==
constants
.
LOGIN_OAUTH_GITHUB
:
if
config
.
config_login_type
==
constants
.
LOGIN_OAUTH
:
_config_string
(
"config_github_oauth_client_id"
)
active_oauths
=
0
_config_string
(
"config_github_oauth_client_secret"
)
if
not
config
.
config_github_oauth_client_id
or
not
config
.
config_github_oauth_client_secret
:
for
element
in
oauthblueprints
:
return
_configuration_result
(
'Please enter Github oauth credentials'
,
gdriveError
)
if
to_save
[
"config_"
+
str
(
element
[
'id'
])
+
"_oauth_client_id"
]
\
and
to_save
[
"config_"
+
str
(
element
[
'id'
])
+
"_oauth_client_secret"
]:
# Google OAuth configuration
active_oauths
+=
1
if
config
.
config_login_type
==
constants
.
LOGIN_OAUTH_GOOGLE
:
element
[
"active"
]
=
1
_config_string
(
"config_google_oauth_client_id"
)
ub
.
session
.
query
(
ub
.
OAuthProvider
)
.
filter
(
ub
.
OAuthProvider
.
id
==
element
[
'id'
])
.
update
(
_config_string
(
"config_google_oauth_client_secret"
)
{
"oauth_client_id"
:
to_save
[
"config_"
+
str
(
element
[
'id'
])
+
"_oauth_client_id"
],
if
not
config
.
config_google_oauth_client_id
or
not
config
.
config_google_oauth_client_secret
:
"oauth_client_secret"
:
to_save
[
"config_"
+
str
(
element
[
'id'
])
+
"_oauth_client_secret"
],
return
_configuration_result
(
'Please enter Google oauth credentials'
,
gdriveError
)
"active"
:
1
})
if
to_save
[
"config_"
+
str
(
element
[
'id'
])
+
"_oauth_client_id"
]
!=
element
[
'oauth_client_id'
]
\
or
to_save
[
"config_"
+
str
(
element
[
'id'
])
+
"_oauth_client_secret"
]
!=
element
[
'oauth_client_secret'
]:
reboot_required
=
True
element
[
'oauth_client_id'
]
=
to_save
[
"config_"
+
str
(
element
[
'id'
])
+
"_oauth_client_id"
]
element
[
'oauth_client_secret'
]
=
to_save
[
"config_"
+
str
(
element
[
'id'
])
+
"_oauth_client_secret"
]
else
:
ub
.
session
.
query
(
ub
.
OAuthProvider
)
.
filter
(
ub
.
OAuthProvider
.
id
==
element
[
'id'
])
.
update
(
{
"active"
:
0
})
element
[
"active"
]
=
0
_config_int
(
"config_log_level"
)
_config_int
(
"config_log_level"
)
_config_string
(
"config_logfile"
)
_config_string
(
"config_logfile"
)
...
...
cps/comic.py
View file @
38f3c2d5
...
@@ -31,7 +31,7 @@ try:
...
@@ -31,7 +31,7 @@ try:
from
comicapi.comicarchive
import
ComicArchive
,
MetaDataStyle
from
comicapi.comicarchive
import
ComicArchive
,
MetaDataStyle
use_comic_meta
=
True
use_comic_meta
=
True
except
ImportError
as
e
:
except
ImportError
as
e
:
log
.
warnin
g
(
'cannot import comicapi, extracting comic metadata will not work:
%
s'
,
e
)
log
.
debu
g
(
'cannot import comicapi, extracting comic metadata will not work:
%
s'
,
e
)
import
zipfile
import
zipfile
import
tarfile
import
tarfile
use_comic_meta
=
False
use_comic_meta
=
False
...
...
cps/config_sql.py
View file @
38f3c2d5
...
@@ -84,11 +84,7 @@ class _Settings(_Base):
...
@@ -84,11 +84,7 @@ class _Settings(_Base):
config_login_type
=
Column
(
Integer
,
default
=
0
)
config_login_type
=
Column
(
Integer
,
default
=
0
)
config_oauth_provider
=
Column
(
Integer
)
# config_oauth_provider = Column(Integer)
#config_github_oauth_client_id = Column(String)
#config_github_oauth_client_secret = Column(String)
#config_google_oauth_client_id = Column(String)
#config_google_oauth_client_secret = Column(String)
config_ldap_provider_url
=
Column
(
String
,
default
=
'localhost'
)
config_ldap_provider_url
=
Column
(
String
,
default
=
'localhost'
)
config_ldap_port
=
Column
(
SmallInteger
,
default
=
389
)
config_ldap_port
=
Column
(
SmallInteger
,
default
=
389
)
...
@@ -310,12 +306,3 @@ def load_configuration(session):
...
@@ -310,12 +306,3 @@ def load_configuration(session):
session
.
commit
()
session
.
commit
()
return
_ConfigSQL
(
session
)
return
_ConfigSQL
(
session
)
def
load_oauth
(
session
):
#_migrate_database(session)
if
not
session
.
query
(
OAuthProvider
)
.
count
():
session
.
add
(
_Settings
())
session
.
commit
()
return
_ConfigSQL
(
session
)
cps/constants.py
View file @
38f3c2d5
...
@@ -91,8 +91,8 @@ AUTO_UPDATE_NIGHTLY = 1 << 2
...
@@ -91,8 +91,8 @@ AUTO_UPDATE_NIGHTLY = 1 << 2
LOGIN_STANDARD
=
0
LOGIN_STANDARD
=
0
LOGIN_LDAP
=
1
LOGIN_LDAP
=
1
LOGIN_OAUTH
_GITHUB
=
2
LOGIN_OAUTH
=
2
LOGIN_OAUTH_GOOGLE
=
3
#
LOGIN_OAUTH_GOOGLE = 3
DEFAULT_PASSWORD
=
"admin123"
DEFAULT_PASSWORD
=
"admin123"
...
...
cps/helper.py
View file @
38f3c2d5
...
@@ -71,15 +71,6 @@ from .worker import TASK_EMAIL, TASK_CONVERT, TASK_UPLOAD, TASK_CONVERT_ANY
...
@@ -71,15 +71,6 @@ from .worker import TASK_EMAIL, TASK_CONVERT, TASK_UPLOAD, TASK_CONVERT_ANY
log
=
logger
.
create
()
log
=
logger
.
create
()
# ToDo delete duplicate
def
update_download
(
book_id
,
user_id
):
check
=
ub
.
session
.
query
(
ub
.
Downloads
)
.
filter
(
ub
.
Downloads
.
user_id
==
user_id
)
.
filter
(
ub
.
Downloads
.
book_id
==
book_id
)
.
first
()
if
not
check
:
new_download
=
ub
.
Downloads
(
user_id
=
user_id
,
book_id
=
book_id
)
ub
.
session
.
add
(
new_download
)
ub
.
session
.
commit
()
# Convert existing book entry to new format
# Convert existing book entry to new format
def
convert_book_format
(
book_id
,
calibrepath
,
old_book_format
,
new_book_format
,
user_id
,
kindle_mail
=
None
):
def
convert_book_format
(
book_id
,
calibrepath
,
old_book_format
,
new_book_format
,
user_id
,
kindle_mail
=
None
):
book
=
db
.
session
.
query
(
db
.
Books
)
.
filter
(
db
.
Books
.
id
==
book_id
)
.
first
()
book
=
db
.
session
.
query
(
db
.
Books
)
.
filter
(
db
.
Books
.
id
==
book_id
)
.
first
()
...
...
cps/oauth.py
View file @
38f3c2d5
...
@@ -32,13 +32,14 @@ try:
...
@@ -32,13 +32,14 @@ try:
.. _SQLAlchemy: http://www.sqlalchemy.org/
.. _SQLAlchemy: http://www.sqlalchemy.org/
"""
"""
def
__init__
(
self
,
model
,
session
,
def
__init__
(
self
,
model
,
session
,
provider_id
,
user
=
None
,
user_id
=
None
,
user_required
=
None
,
anon_user
=
None
,
user
=
None
,
user_id
=
None
,
user_required
=
None
,
anon_user
=
None
,
cache
=
None
):
cache
=
None
):
self
.
provider_id
=
provider_id
super
(
OAuthBackend
,
self
)
.
__init__
(
model
,
session
,
user
,
user_id
,
user_required
,
anon_user
,
cache
)
super
(
OAuthBackend
,
self
)
.
__init__
(
model
,
session
,
user
,
user_id
,
user_required
,
anon_user
,
cache
)
def
get
(
self
,
blueprint
,
user
=
None
,
user_id
=
None
):
def
get
(
self
,
blueprint
,
user
=
None
,
user_id
=
None
):
if
blueprint
.
name
+
'_oauth_token'
in
session
and
session
[
blueprint
.
name
+
'_oauth_token'
]
!=
''
:
if
self
.
provider_id
+
'_oauth_token'
in
session
and
session
[
self
.
provider_id
+
'_oauth_token'
]
!=
''
:
return
session
[
blueprint
.
name
+
'_oauth_token'
]
return
session
[
blueprint
.
name
+
'_oauth_token'
]
# check cache
# check cache
cache_key
=
self
.
make_cache_key
(
blueprint
=
blueprint
,
user
=
user
,
user_id
=
user_id
)
cache_key
=
self
.
make_cache_key
(
blueprint
=
blueprint
,
user
=
user
,
user_id
=
user_id
)
...
@@ -49,15 +50,15 @@ try:
...
@@ -49,15 +50,15 @@ try:
# if not cached, make database queries
# if not cached, make database queries
query
=
(
query
=
(
self
.
session
.
query
(
self
.
model
)
self
.
session
.
query
(
self
.
model
)
.
filter_by
(
provider
=
blueprint
.
name
)
.
filter_by
(
provider
=
self
.
provider_id
)
)
)
uid
=
first
([
user_id
,
self
.
user_id
,
blueprint
.
config
.
get
(
"user_id"
)])
uid
=
first
([
user_id
,
self
.
user_id
,
blueprint
.
config
.
get
(
"user_id"
)])
u
=
first
(
_get_real_user
(
ref
,
self
.
anon_user
)
u
=
first
(
_get_real_user
(
ref
,
self
.
anon_user
)
for
ref
in
(
user
,
self
.
user
,
blueprint
.
config
.
get
(
"user"
)))
for
ref
in
(
user
,
self
.
user
,
blueprint
.
config
.
get
(
"user"
)))
use_provider_user_id
=
False
use_provider_user_id
=
False
if
blueprint
.
name
+
'_oauth_user_id'
in
session
and
session
[
blueprint
.
name
+
'_oauth_user_id'
]
!=
''
:
if
self
.
provider_id
+
'_oauth_user_id'
in
session
and
session
[
self
.
provider_id
+
'_oauth_user_id'
]
!=
''
:
query
=
query
.
filter_by
(
provider_user_id
=
session
[
blueprint
.
name
+
'_oauth_user_id'
])
query
=
query
.
filter_by
(
provider_user_id
=
session
[
self
.
provider_id
+
'_oauth_user_id'
])
use_provider_user_id
=
True
use_provider_user_id
=
True
if
self
.
user_required
and
not
u
and
not
uid
and
not
use_provider_user_id
:
if
self
.
user_required
and
not
u
and
not
uid
and
not
use_provider_user_id
:
...
@@ -94,7 +95,7 @@ try:
...
@@ -94,7 +95,7 @@ try:
# if there was an existing model, delete it
# if there was an existing model, delete it
existing_query
=
(
existing_query
=
(
self
.
session
.
query
(
self
.
model
)
self
.
session
.
query
(
self
.
model
)
.
filter_by
(
provider
=
blueprint
.
name
)
.
filter_by
(
provider
=
self
.
provider_id
)
)
)
# check for user ID
# check for user ID
has_user_id
=
hasattr
(
self
.
model
,
"user_id"
)
has_user_id
=
hasattr
(
self
.
model
,
"user_id"
)
...
@@ -108,7 +109,7 @@ try:
...
@@ -108,7 +109,7 @@ try:
existing_query
.
delete
()
existing_query
.
delete
()
# create a new model for this token
# create a new model for this token
kwargs
=
{
kwargs
=
{
"provider"
:
blueprint
.
name
,
"provider"
:
self
.
provider_id
,
"token"
:
token
,
"token"
:
token
,
}
}
if
has_user_id
and
uid
:
if
has_user_id
and
uid
:
...
@@ -126,7 +127,7 @@ try:
...
@@ -126,7 +127,7 @@ try:
def
delete
(
self
,
blueprint
,
user
=
None
,
user_id
=
None
):
def
delete
(
self
,
blueprint
,
user
=
None
,
user_id
=
None
):
query
=
(
query
=
(
self
.
session
.
query
(
self
.
model
)
self
.
session
.
query
(
self
.
model
)
.
filter_by
(
provider
=
blueprint
.
name
)
.
filter_by
(
provider
=
self
.
provider_id
)
)
)
uid
=
first
([
user_id
,
self
.
user_id
,
blueprint
.
config
.
get
(
"user_id"
)])
uid
=
first
([
user_id
,
self
.
user_id
,
blueprint
.
config
.
get
(
"user_id"
)])
u
=
first
(
_get_real_user
(
ref
,
self
.
anon_user
)
u
=
first
(
_get_real_user
(
ref
,
self
.
anon_user
)
...
...
cps/oauth_bb.py
View file @
38f3c2d5
...
@@ -45,40 +45,10 @@ oauth = Blueprint('oauth', __name__)
...
@@ -45,40 +45,10 @@ oauth = Blueprint('oauth', __name__)
log
=
logger
.
create
()
log
=
logger
.
create
()
'''def github_oauth_required(f):
@wraps(f)
def inner(*args, **kwargs):
if config.config_login_type == constants.LOGIN_OAUTH_GITHUB:
return f(*args, **kwargs)
if request.is_xhr:
data = {'status': 'error', 'message': 'Not Found'}
response = make_response(json.dumps(data, ensure_ascii=False))
response.headers["Content-Type"] = "application/json; charset=utf-8"
return response, 404
abort(404)
return inner
def google_oauth_required(f):
@wraps(f)
def inner(*args, **kwargs):
if config.config_use_google_oauth == constants.LOGIN_OAUTH_GOOGLE:
return f(*args, **kwargs)
if request.is_xhr:
data = {'status': 'error', 'message': 'Not Found'}
response = make_response(json.dumps(data, ensure_ascii=False))
response.headers["Content-Type"] = "application/json; charset=utf-8"
return response, 404
abort(404)
return inner'''
def
oauth_required
(
f
):
def
oauth_required
(
f
):
@
wraps
(
f
)
@
wraps
(
f
)
def
inner
(
*
args
,
**
kwargs
):
def
inner
(
*
args
,
**
kwargs
):
if
config
.
config_
oauth_provider
:
if
config
.
config_
login_type
==
constants
.
LOGIN_OAUTH
:
return
f
(
*
args
,
**
kwargs
)
return
f
(
*
args
,
**
kwargs
)
if
request
.
is_xhr
:
if
request
.
is_xhr
:
data
=
{
'status'
:
'error'
,
'message'
:
'Not Found'
}
data
=
{
'status'
:
'error'
,
'message'
:
'Not Found'
}
...
@@ -90,15 +60,14 @@ def oauth_required(f):
...
@@ -90,15 +60,14 @@ def oauth_required(f):
return
inner
return
inner
def
register_oauth_blueprint
(
blueprint
,
show_name
):
def
register_oauth_blueprint
(
id
,
show_name
):
if
blueprint
.
name
!=
""
:
oauth_check
[
id
]
=
show_name
oauth_check
[
blueprint
.
name
]
=
show_name
def
register_user_with_oauth
(
user
=
None
):
def
register_user_with_oauth
(
user
=
None
):
all_oauth
=
{}
all_oauth
=
{}
for
oauth
in
oauth_check
.
keys
():
for
oauth
in
oauth_check
.
keys
():
if
oauth
+
'_oauth_user_id'
in
session
and
session
[
oauth
+
'_oauth_user_id'
]
!=
''
:
if
str
(
oauth
)
+
'_oauth_user_id'
in
session
and
session
[
str
(
oauth
)
+
'_oauth_user_id'
]
!=
''
:
all_oauth
[
oauth
]
=
oauth_check
[
oauth
]
all_oauth
[
oauth
]
=
oauth_check
[
oauth
]
if
len
(
all_oauth
.
keys
())
==
0
:
if
len
(
all_oauth
.
keys
())
==
0
:
return
return
...
@@ -109,7 +78,7 @@ def register_user_with_oauth(user=None):
...
@@ -109,7 +78,7 @@ def register_user_with_oauth(user=None):
# Find this OAuth token in the database, or create it
# Find this OAuth token in the database, or create it
query
=
ub
.
session
.
query
(
ub
.
OAuth
)
.
filter_by
(
query
=
ub
.
session
.
query
(
ub
.
OAuth
)
.
filter_by
(
provider
=
oauth
,
provider
=
oauth
,
provider_user_id
=
session
[
oauth
+
"_oauth_user_id"
],
provider_user_id
=
session
[
str
(
oauth
)
+
"_oauth_user_id"
],
)
)
try
:
try
:
oauth
=
query
.
one
()
oauth
=
query
.
one
()
...
@@ -126,8 +95,8 @@ def register_user_with_oauth(user=None):
...
@@ -126,8 +95,8 @@ def register_user_with_oauth(user=None):
def
logout_oauth_user
():
def
logout_oauth_user
():
for
oauth
in
oauth_check
.
keys
():
for
oauth
in
oauth_check
.
keys
():
if
oauth
+
'_oauth_user_id'
in
session
:
if
str
(
oauth
)
+
'_oauth_user_id'
in
session
:
session
.
pop
(
oauth
+
'_oauth_user_id'
)
session
.
pop
(
str
(
oauth
)
+
'_oauth_user_id'
)
if
ub
.
oauth_support
:
if
ub
.
oauth_support
:
oauthblueprints
=
[]
oauthblueprints
=
[]
...
@@ -142,30 +111,27 @@ if ub.oauth_support:
...
@@ -142,30 +111,27 @@ if ub.oauth_support:
oauth
.
active
=
False
oauth
.
active
=
False
ub
.
session
.
add
(
oauth
)
ub
.
session
.
add
(
oauth
)
ub
.
session
.
commit
()
ub
.
session
.
commit
()
'''new_scope = ub.OAuthScope(provider_id=oauth.id, scope="https://www.googleapis.com/auth/plus.me")
ub.session.add(new_scope)
ub.session.commit()
new_scope = ub.OAuthScope(provider_id=oauth.id, scope="https://www.googleapis.com/auth/userinfo.email")
ub.session.add(new_scope)
ub.session.commit()'''
ele1
=
dict
(
provider_name
=
'Github'
,
oauth_ids
=
ub
.
session
.
query
(
ub
.
OAuthProvider
)
.
all
()
active
=
False
,
ele1
=
dict
(
provider_name
=
'github'
,
oauth_client_id
=
None
,
id
=
oauth_ids
[
0
]
.
id
,
active
=
oauth_ids
[
0
]
.
active
,
oauth_client_id
=
oauth_ids
[
0
]
.
oauth_client_id
,
scope
=
None
,
scope
=
None
,
oauth_client_secret
=
None
,
oauth_client_secret
=
oauth_ids
[
0
]
.
oauth_client_secret
,
obtain_link
=
'https://github.com/settings/developers'
)
obtain_link
=
'https://github.com/settings/developers'
)
ele2
=
dict
(
provider_name
=
'Google'
,
ele2
=
dict
(
provider_name
=
'google'
,
active
=
False
,
id
=
oauth_ids
[
1
]
.
id
,
active
=
oauth_ids
[
1
]
.
active
,
scope
=
[
"https://www.googleapis.com/auth/plus.me"
,
"https://www.googleapis.com/auth/userinfo.email"
],
scope
=
[
"https://www.googleapis.com/auth/plus.me"
,
"https://www.googleapis.com/auth/userinfo.email"
],
oauth_client_id
=
None
,
oauth_client_id
=
oauth_ids
[
1
]
.
oauth_client_id
,
oauth_client_secret
=
None
,
oauth_client_secret
=
oauth_ids
[
1
]
.
oauth_client_secret
,
obtain_link
=
'https://github.com/settings/developers'
)
obtain_link
=
'https://github.com/settings/developers'
)
oauthblueprints
.
append
(
ele1
)
oauthblueprints
.
append
(
ele1
)
oauthblueprints
.
append
(
ele2
)
oauthblueprints
.
append
(
ele2
)
for
element
in
oauthblueprints
:
for
element
in
oauthblueprints
:
if
element
[
'provider_name'
]
==
'
G
ithub'
:
if
element
[
'provider_name'
]
==
'
g
ithub'
:
blueprint_func
=
make_github_blueprint
blueprint_func
=
make_github_blueprint
else
:
else
:
blueprint_func
=
make_google_blueprint
blueprint_func
=
make_google_blueprint
...
@@ -177,36 +143,10 @@ if ub.oauth_support:
...
@@ -177,36 +143,10 @@ if ub.oauth_support:
)
)
element
[
'blueprint'
]
=
blueprint
element
[
'blueprint'
]
=
blueprint
app
.
register_blueprint
(
blueprint
,
url_prefix
=
"/login"
)
app
.
register_blueprint
(
blueprint
,
url_prefix
=
"/login"
)
element
[
'blueprint'
]
.
backend
=
OAuthBackend
(
ub
.
OAuth
,
ub
.
session
,
user
=
current_user
,
user_required
=
True
)
element
[
'blueprint'
]
.
backend
=
OAuthBackend
(
ub
.
OAuth
,
ub
.
session
,
str
(
element
[
'id'
]),
user
=
current_user
,
user_required
=
True
)
if
element
[
'active'
]:
if
element
[
'active'
]:
register_oauth_blueprint
(
element
[
'blueprint'
],
element
[
'provider_name'
])
register_oauth_blueprint
(
element
[
'id'
],
element
[
'provider_name'
])
'''github_blueprint = make_github_blueprint(
client_id=config.config_github_oauth_client_id,
client_secret=config.config_github_oauth_client_secret,
redirect_to="oauth.github_login")
google_blueprint = make_google_blueprint(
client_id=config.config_google_oauth_client_id,
client_secret=config.config_google_oauth_client_secret,
redirect_to="oauth.google_login",
scope=[
"https://www.googleapis.com/auth/plus.me",
"https://www.googleapis.com/auth/userinfo.email",
]
)
app.register_blueprint(google_blueprint, url_prefix="/login")
app.register_blueprint(github_blueprint, url_prefix='/login')
github_blueprint.backend = OAuthBackend(ub.OAuth, ub.session, user=current_user, user_required=True)
google_blueprint.backend = OAuthBackend(ub.OAuth, ub.session, user=current_user, user_required=True)'''
'''if config.config_login_type == constants.LOGIN_OAUTH_GITHUB:
register_oauth_blueprint(github_blueprint, 'GitHub')
if config.config_login_type == constants.LOGIN_OAUTH_GOOGLE:
register_oauth_blueprint(google_blueprint, 'Google')'''
@
oauth_authorized
.
connect_via
(
oauthblueprints
[
0
][
'blueprint'
])
@
oauth_authorized
.
connect_via
(
oauthblueprints
[
0
][
'blueprint'
])
...
@@ -222,7 +162,7 @@ if ub.oauth_support:
...
@@ -222,7 +162,7 @@ if ub.oauth_support:
github_info
=
resp
.
json
()
github_info
=
resp
.
json
()
github_user_id
=
str
(
github_info
[
"id"
])
github_user_id
=
str
(
github_info
[
"id"
])
return
oauth_update_token
(
blueprint
,
token
,
github_user_id
)
return
oauth_update_token
(
str
(
oauthblueprints
[
0
][
'id'
])
,
token
,
github_user_id
)
@
oauth_authorized
.
connect_via
(
oauthblueprints
[
1
][
'blueprint'
])
@
oauth_authorized
.
connect_via
(
oauthblueprints
[
1
][
'blueprint'
])
...
@@ -238,17 +178,16 @@ if ub.oauth_support:
...
@@ -238,17 +178,16 @@ if ub.oauth_support:
google_info
=
resp
.
json
()
google_info
=
resp
.
json
()
google_user_id
=
str
(
google_info
[
"id"
])
google_user_id
=
str
(
google_info
[
"id"
])
return
oauth_update_token
(
str
(
oauthblueprints
[
1
][
'id'
]),
token
,
google_user_id
)
return
oauth_update_token
(
blueprint
,
token
,
google_user_id
)
def
oauth_update_token
(
provider_id
,
token
,
provider_user_id
):
def
oauth_update_token
(
blueprint
,
token
,
provider_user_id
):
session
[
provider_id
+
"_oauth_user_id"
]
=
provider_user_id
session
[
blueprint
.
name
+
"_oauth_user_id"
]
=
provider_user_id
session
[
provider_id
+
"_oauth_token"
]
=
token
session
[
blueprint
.
name
+
"_oauth_token"
]
=
token
# Find this OAuth token in the database, or create it
# Find this OAuth token in the database, or create it
query
=
ub
.
session
.
query
(
ub
.
OAuth
)
.
filter_by
(
query
=
ub
.
session
.
query
(
ub
.
OAuth
)
.
filter_by
(
provider
=
blueprint
.
name
,
provider
=
provider_id
,
provider_user_id
=
provider_user_id
,
provider_user_id
=
provider_user_id
,
)
)
try
:
try
:
...
@@ -257,7 +196,7 @@ if ub.oauth_support:
...
@@ -257,7 +196,7 @@ if ub.oauth_support:
oauth
.
token
=
token
oauth
.
token
=
token
except
NoResultFound
:
except
NoResultFound
:
oauth
=
ub
.
OAuth
(
oauth
=
ub
.
OAuth
(
provider
=
blueprint
.
name
,
provider
=
provider_id
,
provider_user_id
=
provider_user_id
,
provider_user_id
=
provider_user_id
,
token
=
token
,
token
=
token
,
)
)
...
@@ -272,9 +211,9 @@ if ub.oauth_support:
...
@@ -272,9 +211,9 @@ if ub.oauth_support:
return
False
return
False
def
bind_oauth_or_register
(
provider
,
provider_user_id
,
redirect_url
):
def
bind_oauth_or_register
(
provider
_id
,
provider_user_id
,
redirect_url
):
query
=
ub
.
session
.
query
(
ub
.
OAuth
)
.
filter_by
(
query
=
ub
.
session
.
query
(
ub
.
OAuth
)
.
filter_by
(
provider
=
provider
,
provider
=
provider
_id
,
provider_user_id
=
provider_user_id
,
provider_user_id
=
provider_user_id
,
)
)
try
:
try
:
...
@@ -311,7 +250,7 @@ if ub.oauth_support:
...
@@ -311,7 +250,7 @@ if ub.oauth_support:
try
:
try
:
oauths
=
query
.
all
()
oauths
=
query
.
all
()
for
oauth
in
oauths
:
for
oauth
in
oauths
:
status
.
append
(
oauth
.
provider
)
status
.
append
(
int
(
oauth
.
provider
)
)
return
status
return
status
except
NoResultFound
:
except
NoResultFound
:
return
None
return
None
...
@@ -366,7 +305,7 @@ if ub.oauth_support:
...
@@ -366,7 +305,7 @@ if ub.oauth_support:
account_info
=
github
.
get
(
'/user'
)
account_info
=
github
.
get
(
'/user'
)
if
account_info
.
ok
:
if
account_info
.
ok
:
account_info_json
=
account_info
.
json
()
account_info_json
=
account_info
.
json
()
return
bind_oauth_or_register
(
oauthblueprints
[
0
][
'
blueprint'
]
.
name
,
account_info_json
[
'id'
],
'github.login'
)
return
bind_oauth_or_register
(
oauthblueprints
[
0
][
'
id'
]
,
account_info_json
[
'id'
],
'github.login'
)
flash
(
_
(
u"GitHub Oauth error, please retry later."
),
category
=
"error"
)
flash
(
_
(
u"GitHub Oauth error, please retry later."
),
category
=
"error"
)
return
redirect
(
url_for
(
'web.login'
))
return
redirect
(
url_for
(
'web.login'
))
...
@@ -374,7 +313,7 @@ if ub.oauth_support:
...
@@ -374,7 +313,7 @@ if ub.oauth_support:
@
oauth
.
route
(
'/unlink/github'
,
methods
=
[
"GET"
])
@
oauth
.
route
(
'/unlink/github'
,
methods
=
[
"GET"
])
@
login_required
@
login_required
def
github_login_unlink
():
def
github_login_unlink
():
return
unlink_oauth
(
oauthblueprints
[
0
][
'
blueprint'
]
.
name
)
return
unlink_oauth
(
oauthblueprints
[
0
][
'
id'
]
)
@
oauth
.
route
(
'/login/google'
)
@
oauth
.
route
(
'/login/google'
)
...
@@ -385,7 +324,7 @@ if ub.oauth_support:
...
@@ -385,7 +324,7 @@ if ub.oauth_support:
resp
=
google
.
get
(
"/oauth2/v2/userinfo"
)
resp
=
google
.
get
(
"/oauth2/v2/userinfo"
)
if
resp
.
ok
:
if
resp
.
ok
:
account_info_json
=
resp
.
json
()
account_info_json
=
resp
.
json
()
return
bind_oauth_or_register
(
oauthblueprints
[
1
][
'
blueprint'
]
.
name
,
account_info_json
[
'id'
],
'google.login'
)
return
bind_oauth_or_register
(
oauthblueprints
[
1
][
'
id'
]
,
account_info_json
[
'id'
],
'google.login'
)
flash
(
_
(
u"Google Oauth error, please retry later."
),
category
=
"error"
)
flash
(
_
(
u"Google Oauth error, please retry later."
),
category
=
"error"
)
return
redirect
(
url_for
(
'web.login'
))
return
redirect
(
url_for
(
'web.login'
))
...
...
cps/templates/config_edit.html
View file @
38f3c2d5
...
@@ -260,12 +260,12 @@
...
@@ -260,12 +260,12 @@
<a
href=
"{{prov['obtain_link']}}"
target=
"_blank"
>
{{_('Obtain %(provider)s OAuth Credential', provider=prov['provider_name'])}}
</a>
<a
href=
"{{prov['obtain_link']}}"
target=
"_blank"
>
{{_('Obtain %(provider)s OAuth Credential', provider=prov['provider_name'])}}
</a>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"config_{{ prov['
provider_name
'] }}_oauth_client_id"
>
{{_('%(provider)s OAuth Client Id', provider=prov['provider_name'])}}
</label>
<label
for=
"config_{{ prov['
id
'] }}_oauth_client_id"
>
{{_('%(provider)s OAuth Client Id', provider=prov['provider_name'])}}
</label>
<input
type=
"text"
class=
"form-control"
id=
"config_{{ prov['
provider_name'] }}_oauth_client_id"
name=
"config_{{ prov['provider_name'] }}_oauth_client_id"
value=
"{% if prov['active']
%}{{ prov['oauth_client_id'] }}{% endif %}"
autocomplete=
"off"
>
<input
type=
"text"
class=
"form-control"
id=
"config_{{ prov['
id'] }}_oauth_client_id"
name=
"config_{{ prov['id'] }}_oauth_client_id"
value=
"{% if prov['oauth_client_id']
%}{{ prov['oauth_client_id'] }}{% endif %}"
autocomplete=
"off"
>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"config_{{ prov['
provider_name
'] }}_oauth_client_secret"
>
{{_('%(provider)s OAuth Client Secret', provider=prov['provider_name'])}}
</label>
<label
for=
"config_{{ prov['
id
'] }}_oauth_client_secret"
>
{{_('%(provider)s OAuth Client Secret', provider=prov['provider_name'])}}
</label>
<input
type=
"text"
class=
"form-control"
id=
"config_{{ prov['
provider_name'] }}_oauth_client_secret"
name=
"config_{{ prov['provider_name'] }}_oauth_client_secret"
value=
"{% if prov['active'] %}{{ prov['oauth_client_id
'] }}{% endif %}"
autocomplete=
"off"
>
<input
type=
"text"
class=
"form-control"
id=
"config_{{ prov['
id'] }}_oauth_client_secret"
name=
"config_{{ prov['id'] }}_oauth_client_secret"
value=
"{% if prov['oauth_client_secret']%}{{ prov['oauth_client_secret
'] }}{% endif %}"
autocomplete=
"off"
>
</div>
</div>
{% endfor %}
{% endfor %}
</div>
</div>
...
...
cps/templates/user_edit.html
View file @
38f3c2d5
...
@@ -47,13 +47,13 @@
...
@@ -47,13 +47,13 @@
</div>
</div>
{% if registered_oauth.keys()| length > 0 %}
{% if registered_oauth.keys()| length > 0 %}
{% for
oauth, name in registered_oauth.iter
items() %}
{% for
id, name in registered_oauth.
items() %}
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label>
{{ name }} {{_('OAuth Settings')}}
</label>
<label>
{{ name }} {{_('OAuth Settings')}}
</label>
{% if
oauth
not in oauth_status %}
{% if
id
not in oauth_status %}
<div><a
href=
"{{ url_for(
oauth +'.login') }}"
id=
"config_{{ oauth
}}_oauth"
class=
"btn btn-primary"
>
{{_('Link')}}
</a></div>
<div><a
href=
"{{ url_for(
'oauth.'+ name +'_login') }}"
id=
"config_{{ id
}}_oauth"
class=
"btn btn-primary"
>
{{_('Link')}}
</a></div>
{% else %}
{% else %}
<div><a
href=
"{{ url_for('oauth.'+
oauth +'_login_unlink') }}"
id=
"config_{{ oauth
}}_oauth"
class=
"btn btn-primary"
>
{{_('Unlink')}}
</a></div>
<div><a
href=
"{{ url_for('oauth.'+
name +'_login_unlink') }}"
id=
"config_{{ id
}}_oauth"
class=
"btn btn-primary"
>
{{_('Unlink')}}
</a></div>
{% endif %}
{% endif %}
{% endfor %}
{% endfor %}
</div>
</div>
...
...
cps/ub.py
View file @
38f3c2d5
...
@@ -180,12 +180,14 @@ class User(UserBase, Base):
...
@@ -180,12 +180,14 @@ class User(UserBase, Base):
default_language
=
Column
(
String
(
3
),
default
=
"all"
)
default_language
=
Column
(
String
(
3
),
default
=
"all"
)
mature_content
=
Column
(
Boolean
,
default
=
True
)
mature_content
=
Column
(
Boolean
,
default
=
True
)
if
oauth_support
:
if
oauth_support
:
class
OAuth
(
OAuthConsumerMixin
,
Base
):
class
OAuth
(
OAuthConsumerMixin
,
Base
):
provider_user_id
=
Column
(
String
(
256
))
provider_user_id
=
Column
(
String
(
256
))
user_id
=
Column
(
Integer
,
ForeignKey
(
User
.
id
))
user_id
=
Column
(
Integer
,
ForeignKey
(
User
.
id
))
user
=
relationship
(
User
)
user
=
relationship
(
User
)
class
OAuthProvider
(
Base
):
class
OAuthProvider
(
Base
):
__tablename__
=
'oauthProvider'
__tablename__
=
'oauthProvider'
...
@@ -194,17 +196,6 @@ class OAuthProvider(Base):
...
@@ -194,17 +196,6 @@ class OAuthProvider(Base):
oauth_client_id
=
Column
(
String
)
oauth_client_id
=
Column
(
String
)
oauth_client_secret
=
Column
(
String
)
oauth_client_secret
=
Column
(
String
)
active
=
Column
(
Boolean
)
active
=
Column
(
Boolean
)
# scope = relationship('OAuthScope', backref='oauthProvider')
'''class OAuthScope(Base):
__tablename__ = 'oauthScope'
id = Column(Integer, primary_key=True)
scope = Column(String, unique=True)
provider_id = Column(Integer, ForeignKey('oauthProvider.id'))
def __repr__(self):
return u"{0}".format(self.scope)'''
# Class for anonymous user is derived from User base and completly overrides methods and properties for the
# Class for anonymous user is derived from User base and completly overrides methods and properties for the
...
...
cps/uploader.py
View file @
38f3c2d5
...
@@ -42,7 +42,7 @@ try:
...
@@ -42,7 +42,7 @@ try:
from
wand.exceptions
import
PolicyError
from
wand.exceptions
import
PolicyError
use_generic_pdf_cover
=
False
use_generic_pdf_cover
=
False
except
(
ImportError
,
RuntimeError
)
as
e
:
except
(
ImportError
,
RuntimeError
)
as
e
:
log
.
warnin
g
(
'cannot import Image, generating pdf covers for pdf uploads will not work:
%
s'
,
e
)
log
.
debu
g
(
'cannot import Image, generating pdf covers for pdf uploads will not work:
%
s'
,
e
)
use_generic_pdf_cover
=
True
use_generic_pdf_cover
=
True
try
:
try
:
...
@@ -50,21 +50,21 @@ try:
...
@@ -50,21 +50,21 @@ try:
from
PyPDF2
import
__version__
as
PyPdfVersion
from
PyPDF2
import
__version__
as
PyPdfVersion
use_pdf_meta
=
True
use_pdf_meta
=
True
except
ImportError
as
e
:
except
ImportError
as
e
:
log
.
warnin
g
(
'cannot import PyPDF2, extracting pdf metadata will not work:
%
s'
,
e
)
log
.
debu
g
(
'cannot import PyPDF2, extracting pdf metadata will not work:
%
s'
,
e
)
use_pdf_meta
=
False
use_pdf_meta
=
False
try
:
try
:
from
.
import
epub
from
.
import
epub
use_epub_meta
=
True
use_epub_meta
=
True
except
ImportError
as
e
:
except
ImportError
as
e
:
log
.
warnin
g
(
'cannot import epub, extracting epub metadata will not work:
%
s'
,
e
)
log
.
debu
g
(
'cannot import epub, extracting epub metadata will not work:
%
s'
,
e
)
use_epub_meta
=
False
use_epub_meta
=
False
try
:
try
:
from
.
import
fb2
from
.
import
fb2
use_fb2_meta
=
True
use_fb2_meta
=
True
except
ImportError
as
e
:
except
ImportError
as
e
:
log
.
warnin
g
(
'cannot import fb2, extracting fb2 metadata will not work:
%
s'
,
e
)
log
.
debu
g
(
'cannot import fb2, extracting fb2 metadata will not work:
%
s'
,
e
)
use_fb2_meta
=
False
use_fb2_meta
=
False
try
:
try
:
...
@@ -72,7 +72,7 @@ try:
...
@@ -72,7 +72,7 @@ try:
from
PIL
import
__version__
as
PILversion
from
PIL
import
__version__
as
PILversion
use_PIL
=
True
use_PIL
=
True
except
ImportError
as
e
:
except
ImportError
as
e
:
log
.
warnin
g
(
'cannot import Pillow, using png and webp images as cover will not work:
%
s'
,
e
)
log
.
debu
g
(
'cannot import Pillow, using png and webp images as cover will not work:
%
s'
,
e
)
use_generic_pdf_cover
=
True
use_generic_pdf_cover
=
True
use_PIL
=
False
use_PIL
=
False
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment