Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
d9b7c88ccf
|
|||
|
7b77387182
|
@@ -20,9 +20,12 @@ REDIRECT_URI_SCHEME = os.getenv('REDIRECT_URI_SCHEME', 'http')
|
|||||||
|
|
||||||
async def get_oidc_metadata():
|
async def get_oidc_metadata():
|
||||||
async with httpx.AsyncClient() as client:
|
async with httpx.AsyncClient() as client:
|
||||||
|
try:
|
||||||
response = await client.get(OIDC_METADATA_URL)
|
response = await client.get(OIDC_METADATA_URL)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
return response.json()
|
return response.json()
|
||||||
|
except httpx.ReadTimeout:
|
||||||
|
return await get_oidc_metadata()
|
||||||
|
|
||||||
@auth_login_bp.route('/login', methods=['GET'])
|
@auth_login_bp.route('/login', methods=['GET'])
|
||||||
@auth_login_bp.route('/auth', methods=['GET'])
|
@auth_login_bp.route('/auth', methods=['GET'])
|
||||||
@@ -87,12 +90,18 @@ async def auth_callback():
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Exchange code for token
|
# Exchange code for token
|
||||||
|
token_fetched = False
|
||||||
|
while not token_fetched:
|
||||||
|
try:
|
||||||
token = await client.fetch_token(
|
token = await client.fetch_token(
|
||||||
metadata['token_endpoint'],
|
metadata['token_endpoint'],
|
||||||
code=code,
|
code=code,
|
||||||
grant_type='authorization_code'
|
grant_type='authorization_code'
|
||||||
)
|
)
|
||||||
await logger.debug(f'Auth Callback | token: {token}')
|
await logger.debug(f'Auth Callback | token: {token}')
|
||||||
|
token_fetched = True
|
||||||
|
except httpx.ReadTimeout:
|
||||||
|
pass
|
||||||
|
|
||||||
# Decode ID token
|
# Decode ID token
|
||||||
id_token = token.get('id_token')
|
id_token = token.get('id_token')
|
||||||
@@ -126,6 +135,7 @@ async def auth_callback():
|
|||||||
return await render_template('views/api/token.htm', error="You don't have Permissions to Access this API"), 403
|
return await render_template('views/api/token.htm', error="You don't have Permissions to Access this API"), 403
|
||||||
|
|
||||||
session['user'] = claims
|
session['user'] = claims
|
||||||
|
|
||||||
response = await make_response(redirect(url_for('side_main.index')))
|
response = await make_response(redirect(url_for('side_main.index')))
|
||||||
response.set_cookie('auth_id', '', max_age=0, httponly=True, secure=True, samesite='Lax')
|
response.set_cookie('auth_id', '', max_age=0, httponly=True, secure=True, samesite='Lax')
|
||||||
return response
|
return response
|
||||||
|
|||||||
+2
-10
@@ -1,4 +1,4 @@
|
|||||||
from my_modules.decoratory.header import login_required, feature_flag_required
|
from my_modules.decoratory.header import login_required
|
||||||
from my_modules.functions import get_ip
|
from my_modules.functions import get_ip
|
||||||
from my_modules.app.setup import LIMITER
|
from my_modules.app.setup import LIMITER
|
||||||
from my_modules.app.logger import logger
|
from my_modules.app.logger import logger
|
||||||
@@ -41,17 +41,12 @@ async def access_list(user):
|
|||||||
@login_required
|
@login_required
|
||||||
async def files_list(user):
|
async def files_list(user):
|
||||||
files_data = await current_app.convex.get_files(user_id=user['sub'])
|
files_data = await current_app.convex.get_files(user_id=user['sub'])
|
||||||
info_enabled = await current_app.convex.is_feature_enabled(key='nanoshare_files-info', fallback=False)
|
|
||||||
edit_enabled = await current_app.convex.is_feature_enabled(key='nanoshare_files-edit', fallback=False)
|
|
||||||
return await render_template("views/webpage/files/list.htm",
|
return await render_template("views/webpage/files/list.htm",
|
||||||
files=files_data,
|
files=files_data
|
||||||
file_info_enabled=info_enabled,
|
|
||||||
file_edit_enabled=edit_enabled,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
@side_main_bp.route('/files/<path:file_id>/info')
|
@side_main_bp.route('/files/<path:file_id>/info')
|
||||||
@login_required
|
@login_required
|
||||||
@feature_flag_required("nanoshare_files-info", fallback=False, status_code=404)
|
|
||||||
async def file_info(file_id, user):
|
async def file_info(file_id, user):
|
||||||
files_data = await current_app.convex.get_files(user_id=user["sub"])
|
files_data = await current_app.convex.get_files(user_id=user["sub"])
|
||||||
file_data = find_file(files_data, file_id)
|
file_data = find_file(files_data, file_id)
|
||||||
@@ -69,7 +64,6 @@ async def file_info(file_id, user):
|
|||||||
|
|
||||||
@side_main_bp.route("/files/<path:file_id>/edit")
|
@side_main_bp.route("/files/<path:file_id>/edit")
|
||||||
@login_required
|
@login_required
|
||||||
@feature_flag_required("nanoshare_files-edit", fallback=False, status_code=404)
|
|
||||||
async def file_edit(file_id, user):
|
async def file_edit(file_id, user):
|
||||||
file_data = await current_app.convex.get_file_informations(file_id=file_id, user_id=user["sub"])
|
file_data = await current_app.convex.get_file_informations(file_id=file_id, user_id=user["sub"])
|
||||||
if not file_data:
|
if not file_data:
|
||||||
@@ -82,7 +76,6 @@ async def file_edit(file_id, user):
|
|||||||
|
|
||||||
@side_main_bp.put("/api/file/<path:file_id>")
|
@side_main_bp.put("/api/file/<path:file_id>")
|
||||||
@login_required
|
@login_required
|
||||||
@feature_flag_required("nanoshare_files-edit", fallback=False, status_code=404)
|
|
||||||
async def file_edit_api(file_id, user):
|
async def file_edit_api(file_id, user):
|
||||||
files_data = await current_app.convex.get_files(user_id=user["sub"])
|
files_data = await current_app.convex.get_files(user_id=user["sub"])
|
||||||
if not find_file(files_data, file_id):
|
if not find_file(files_data, file_id):
|
||||||
@@ -115,7 +108,6 @@ async def file_edit_api(file_id, user):
|
|||||||
|
|
||||||
@side_main_bp.delete("/api/file/<path:file_id>")
|
@side_main_bp.delete("/api/file/<path:file_id>")
|
||||||
@login_required
|
@login_required
|
||||||
@feature_flag_required("nanoshare_files-edit", fallback=False, status_code=404)
|
|
||||||
async def file_delete_api(file_id, user):
|
async def file_delete_api(file_id, user):
|
||||||
files_data = await current_app.convex.get_files(user_id=user["sub"])
|
files_data = await current_app.convex.get_files(user_id=user["sub"])
|
||||||
if not find_file(files_data, file_id):
|
if not find_file(files_data, file_id):
|
||||||
|
|||||||
@@ -38,16 +38,12 @@
|
|||||||
<td><time datetime="{{ file.expires_at }}" class="local-time"></time></td>
|
<td><time datetime="{{ file.expires_at }}" class="local-time"></time></td>
|
||||||
<td class="cell--right">
|
<td class="cell--right">
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
{% if file_info_enabled %}
|
|
||||||
<button class="icon-btn" title="Info">
|
<button class="icon-btn" title="Info">
|
||||||
<a href="{{ url_for('side_main.file_info', file_id=file.file_id) }}">ℹ️ <span class="sr-only">Info</span></a>
|
<a href="{{ url_for('side_main.file_info', file_id=file.file_id) }}">ℹ️ <span class="sr-only">Info</span></a>
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
|
||||||
{% if file_edit_enabled %}
|
|
||||||
<button class="icon-btn" title="Edit">
|
<button class="icon-btn" title="Edit">
|
||||||
<a href="{{ url_for('side_main.file_edit', file_id=file.file_id) }}">✏️ <span class="sr-only">Edit</span></a>
|
<a href="{{ url_for('side_main.file_edit', file_id=file.file_id) }}">✏️ <span class="sr-only">Edit</span></a>
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
|
||||||
<button class="icon-btn" title="Copy link" data-action="copy">📋 <span class="sr-only">Copy</span></button>
|
<button class="icon-btn" title="Copy link" data-action="copy">📋 <span class="sr-only">Copy</span></button>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
Reference in New Issue
Block a user