Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
3c53adf
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Jul 31, 2023
68b006a
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Aug 3, 2023
f746d33
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Aug 4, 2023
dd89519
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Aug 10, 2023
f5e3e45
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Aug 11, 2023
7981327
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Aug 14, 2023
f95645d
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Aug 18, 2023
d5bc38b
Merge remote-tracking branch 'remotes/origin/feature/202210-Instituti…
ndnhat1 Oct 11, 2023
eedc24c
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Aug 16, 2023
503ac03
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Aug 17, 2023
d35581b
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Aug 18, 2023
419794d
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Aug 21, 2023
234a5e8
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Aug 23, 2023
0693413
ref [Bug][NII Redmine#36941]リストア後にファイル作成者が変更される: Keep value of file G…
ndnhat1 Aug 4, 2023
229a7f3
ref [Bug][NII Redmine#36941]リストア後にファイル作成者が変更される: Save guid in File In…
ndnhat1 Aug 15, 2023
3eff305
ref [Bug][NII Redmine#36941]リストア後にファイル作成者が変更される: In case of restore a…
ndnhat1 Sep 14, 2023
fd1f9fa
ref: [Bug][NII Redmine#36122]空のフォルダのエクスポート: Export empty folder in Ad…
ndnhat1 Sep 7, 2023
192fe68
ref: [Bug][NII Redmine#36122]空のフォルダのエクスポート: Fix Travis CI
ndnhat1 Sep 8, 2023
f324235
ref: [Bug][NII Redmine#36934]エクスポートデータ一覧/エクスポート元ストレージの名称が変化する: Save v…
ndnhat1 Sep 12, 2023
05b37b2
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
ndnhat1 Oct 11, 2023
d9eb507
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
tma-ntphat Oct 12, 2023
b32ba76
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
huanphan-tma Oct 18, 2023
a5bbe2a
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
ndnhat1 Oct 19, 2023
537dcc4
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
ndnhat1 Nov 9, 2023
66c87ed
Merge remote-tracking branch 'remotes/origin/develop' into feature/20…
ndnhat1 Dec 25, 2023
8718232
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:
ndnhat1 Dec 28, 2023
fbf5f44
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
ndnhat1 Dec 29, 2023
46702ec
Merge remote-tracking branch 'remotes/origin/develop' into feature/20…
ndnhat1 Jan 8, 2024
e427d47
ref [Bug][NII Redmine#37211]機関ストレージ(アドオン方式)におけるエクスポート・リストア処理の残課題について:…
ndnhat1 Jan 8, 2024
fb59333
Merge remote-tracking branch 'origin/develop' into feature/202210-Ins…
tma-ntphat Mar 4, 2024
48e27f6
Merge remote-tracking branch 'origin/develop' into feature/202210-Ins…
tma-ntphat Mar 4, 2024
77df67a
Merge remote-tracking branch 'origin/develop' into feature/202210-Ins…
tma-ntphat Mar 5, 2024
c1d3143
Revert "Merge remote-tracking branch 'origin/develop' into feature/20…
tma-ntphat Mar 6, 2024
8e716af
refs 2.2.1.ユーザ権限設定機能: Add source code and UT test cases
huanphan-tma Mar 7, 2024
d4beb38
refs 2.2.1.ユーザ権限設定機能: Fix IT bugs
huanphan-tma Mar 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions addons/binderhub/static/node-cfg.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ function NodeSettings() {
callback();
}
}).fail(function(xhr, status, error) {
if (osfHelpers.handleErrorResponse(xhr) === false) {
return;
}
Raven.captureMessage('Error while retrieving addon info', {
extra: {
url: url,
Expand Down
34 changes: 34 additions & 0 deletions admin/base/schemas/config-schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"type": "object",
"patternProperties": {
"^[^\\n]+$": {
"type": "object",
"properties": {
"function_name": {
"type": "string",
"pattern": "\\S+"
},
"api_group": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"api": {
"type": "string",
"pattern": "\\S+"
},
"method": {
"type": "string",
"pattern": "\\S+"
}
},
"required": ["api", "method"]
}
}
},
"required": ["function_name", "api_group"]
}
},
"additionalProperties": false
}
55 changes: 55 additions & 0 deletions admin/base/schemas/service-access-control-setting-schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"type": "object",
"properties": {
"data": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"institution_id": {
"type": "string",
"maxLength": 255
},
"domain": {
"type": "string",
"maxLength": 255,
"pattern": "^(default)$|^(?!\\d+\\.)+(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9]{0,62}[a-z0-9]$"
},
"is_ial2_or_aal2": {
"type": "boolean"
},
"user_domain": {
"type": "string",
"maxLength": 255,
"pattern": "^(default)$|^(@|\\.|)(?!\\d+\\.)+(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9]{0,62}[a-z0-9]$"
},
"project_limit_number": {
"type": "integer",
"minimum": 1,
"maximum": 2147483647
},
"is_whitelist": {
"type": "boolean"
},
"function_codes": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
}
},
"required": [
"institution_id",
"domain",
"is_ial2_or_aal2",
"user_domain",
"is_whitelist",
"function_codes"
]
}
}
},
"required": ["data"]
}
35 changes: 35 additions & 0 deletions admin/base/schemas/utils.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
import json
import jsonschema
import os

here = os.path.split(os.path.abspath(__file__))[0]
Expand All @@ -8,3 +9,37 @@
def from_json(file_name):
with open(os.path.join(here, file_name)) as f:
return json.load(f)


def validate_json_schema(value, json_schema_name):
""" Validate JSON data with JSON schema """
# Load JSON schema file
json_schema = from_json(json_schema_name)
# Validate data with the JSON schema
jsonschema.validate(value, json_schema)


def validate_config_schema(value, json_schema_name):
""" Validate the config JSON data with config JSON schema and additional logic"""
# Validate data with the JSON schema
validate_json_schema(value, json_schema_name)
# Additional validation for config JSON file
function_name_list = []
api_group_list = []
for json_key, json_value in value.items():
function_name = json_value.get('function_name')
api_group = json_value.get('api_group', [])
function_name_list.append(function_name)
api_group_list.extend([(item.get('api'), item.get('method'),) for item in api_group])

# Check if 'function_name' is unique
is_function_name_list_unique = len(function_name_list) == len(set(function_name_list))
if not is_function_name_list_unique:
# If 'function_name' is not unique, raise validation error
raise jsonschema.ValidationError('Config data is invalid: there are non-unique function_name')

# Check if 'api_group' is unique
is_api_group_list_unique = len(api_group_list) == len(set(api_group_list))
if not is_api_group_list_unique:
# If 'api_group' is not unique, raise validation error
raise jsonschema.ValidationError('Config data is invalid: there are non-unique api_group')
2 changes: 1 addition & 1 deletion admin/base/settings/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@
WSGI_APPLICATION = 'admin.base.wsgi.application'
ADMIN_BASE = ''
STATIC_URL = '/static/'
LOGIN_URL = 'account/login/'
LOGIN_URL = '/account/login/'
LOGIN_REDIRECT_URL = ADMIN_BASE

STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_root')
Expand Down
1 change: 1 addition & 0 deletions admin/base/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
url(r'^institutional_storage_quota_control/', include('admin.institutional_storage_quota_control.urls',
namespace='institutional_storage_quota_control')),
url(r'^metadata/', include('admin.rdm_metadata.urls', namespace='metadata')),
url(r'^service_access_control/', include('admin.service_access_control_setting.urls', namespace='service_access_control_setting')),
]),
),
]
Expand Down
Empty file.
129 changes: 129 additions & 0 deletions admin/service_access_control_setting/settings/config_data.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
{
"function_001":{
"function_name":"プロジェクト作成",
"api_group":[
{
"api":"^\/v2\/nodes\/?$",
"method":"POST"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/?$",
"method":"PUT"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/?$",
"method":"DELETE"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/edit\/?$",
"method":"POST"
},
{
"api":"^\/v2\/nodes\/[a-z0-9A-Z]+\/children\/?$",
"method":"POST"
},
{
"api":"^\/v2\/nodes\/[a-z0-9A-Z]+\/forks\/?$",
"method":"POST"
},
{
"api":"^\/api\/v1\/project\/new\/[a-z0-9A-Z]+\/?$",
"method":"POST"
},
{
"api":"^\/v2\/nodes\/[a-z0-9A-Z]+\/node_links\/?$",
"method":"POST"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/pointer\/?$",
"method":"DELETE"
},
{
"api":"^\/v2\/nodes\/[a-z0-9A-Z]+\/?$",
"method":"PATCH"
},
{
"api":"^\/api\/v1\/pointer\/?$",
"method":"POST"
},
{
"api":"^\/v2\/collections\/[a-z0-9A-Z]+\/relationships\/linked_nodes\/?$",
"method":"DELETE"
},
{
"api":"^\/v2\/nodes\/?$",
"method":"PATCH"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/invite_contributor\/?$",
"method":"POST"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/contributors\/?$",
"method":"POST"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/contributor\/remove\/?$",
"method":"POST"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/contributors\/manage\/?$",
"method":"POST"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/private_link\/?$",
"method":"POST"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/private_link\/?$",
"method":"DELETE"
},
{
"api":"^\/v2\/nodes\/?$",
"method":"DELETE"
}
]
},
"function_002":{
"function_name":"アドオン",
"api_group":[
{
"api":"^\/[a-z0-9A-Z]+\/addons\/?$",
"method":"GET"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/settings\/addons\/?$",
"method":"POST"
},
{
"api":"^\/api\/v1\/settings\/[a-z0-9A-Z]+\/accounts\/?$",
"method":"POST"
},
{
"api":"^\/oauth\/connect\/[a-z0-9A-Z]+\/?$",
"method":"GET"
},
{
"api":"^\/api\/v1\/project\/[a-z0-9A-Z]+\/binderhub\/settings\/?$",
"method":"PUT"
}
]
},
"function_003":{
"function_name":"検索",
"api_group":[
{
"api":"^\/search\/?",
"method":"GET"
},
{
"api":"^\/api\/v1\/search\/?$",
"method":"POST"
},
{
"api":"^\/api\/v1\/search\/[a-z0-9A-Z]+\/?$",
"method":"POST"
}
]
}
}
7 changes: 7 additions & 0 deletions admin/service_access_control_setting/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from django.conf.urls import url
from . import views

urlpatterns = [
url(r'^$', views.ServiceAccessControlSettingView.as_view(), name='list'),
url(r'^setting$', views.ServiceAccessControlSettingCreateView.as_view(), name='create_setting'),
]
Loading