Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 6 additions & 1 deletion .deepsource.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
version = 1

test_patterns = ["test/**"]
test_patterns = [
"test/**",
"tests/**",
"**/test/**",
"**/tests/**",
]

[[analyzers]]
name = "python"
Expand Down
2 changes: 1 addition & 1 deletion Access/is_auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from flask import g, request
from flask_httpauth import HTTPBasicAuth

from Api.api import conn, api
from Api.core import conn, api
from Access.policy import authorize

userpass: HTTPBasicAuth = HTTPBasicAuth()
Expand Down
103 changes: 41 additions & 62 deletions Api/api.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,50 @@
#!/usr/bin/env python3
import os

from connection import Connection
from flask import Flask, Blueprint
from flask_cors import CORS
from flask_restx import Api

authorizations = {
"Token": {"type": "apiKey", "in": "header", "name": "X-API-KEY"},
"Bearer": {"type": "apiKey", "in": "header", "name": "Authorization"},
"UserPass": {"type": "basic"},
}

conn = Connection()
api_v1 = Blueprint("api", __name__, url_prefix="/api")
api = Api(
api_v1,
version="2.0.0",
title="Simple Secrets Manager",
description="Secrets management simplified",
authorizations=authorizations,
from Api.core import app
from Api.resources.secrets.kv_resource import Engine_KV # noqa: F401
from Api.resources.auth.tokens_resource import Auth_Tokens # noqa: F401
from Api.resources.auth.tokens_v2_resource import ( # noqa: F401
ListTokensResource,
PersonalTokenResource,
RevokeTokenResource,
ServiceTokenResource,
)
from Api.resources.auth.onboarding_resource import ( # noqa: F401
OnboardingBootstrapResource,
OnboardingStatusResource,
)
from Api.resources.projects.projects_resource import ProjectsResource # noqa: F401
from Api.resources.configs.configs_resource import ConfigsResource # noqa: F401
from Api.resources.secrets.secrets_resource import ( # noqa: F401
SecretExportResource,
SecretItemResource,
)
from Api.resources.compare.compare_secret_resource import ( # noqa: F401
CompareSecretResource,
)
app = Flask(__name__)
app.register_blueprint(api_v1)
from Api.resources.audit.audit_resource import AuditEventsResource # noqa: F401
from Api.resources.me import MeResource # noqa: F401
from Api.resources.workspace.workspace_resource import ( # noqa: F401
WorkspaceGroupItemResource,
WorkspaceGroupMappingItemResource,
WorkspaceGroupMappingsResource,
WorkspaceGroupMembersResource,
WorkspaceGroupsResource,
WorkspaceMemberItemResource,
WorkspaceMembersResource,
WorkspaceProjectMemberItemResource,
WorkspaceProjectMembersResource,
WorkspaceSettingsResource,
)
from Api.resources.auth.userpass_resource import ( # noqa: F401
Auth_Userpass_delete,
Auth_Userpass_register,
)
from Api.resources.meta.version_resource import VersionResource # noqa: F401
from Api.errors import errors # noqa: F401

cors_origins = [
origin.strip()
Expand All @@ -34,46 +56,3 @@
resources={r"/api/*": {"origins": cors_origins or "*"}},
allow_headers=["Authorization", "Content-Type", "X-API-KEY"],
)

if True:
from Api.resources.secrets.kv_resource import Engine_KV # noqa: F401
from Api.resources.auth.tokens_resource import Auth_Tokens # noqa: F401
from Api.resources.auth.tokens_v2_resource import ( # noqa: F401
ListTokensResource,
ServiceTokenResource,
PersonalTokenResource,
RevokeTokenResource,
)
from Api.resources.auth.onboarding_resource import ( # noqa: F401
OnboardingStatusResource,
OnboardingBootstrapResource,
)
from Api.resources.projects.projects_resource import ProjectsResource # noqa: F401
from Api.resources.configs.configs_resource import ConfigsResource # noqa: F401
from Api.resources.secrets.secrets_resource import ( # noqa: F401
SecretItemResource,
SecretExportResource,
)
from Api.resources.compare.compare_secret_resource import (
CompareSecretResource, # noqa: F401
)
from Api.resources.audit.audit_resource import AuditEventsResource # noqa: F401
from Api.resources.me import MeResource # noqa: F401
from Api.resources.workspace.workspace_resource import ( # noqa: F401
WorkspaceSettingsResource,
WorkspaceMembersResource,
WorkspaceMemberItemResource,
WorkspaceProjectMembersResource,
WorkspaceProjectMemberItemResource,
WorkspaceGroupsResource,
WorkspaceGroupItemResource,
WorkspaceGroupMembersResource,
WorkspaceGroupMappingsResource,
WorkspaceGroupMappingItemResource,
)
from Api.resources.auth.userpass_resource import ( # noqa: F401
Auth_Userpass_delete,
Auth_Userpass_register,
)
from Api.resources.meta.version_resource import VersionResource # noqa: F401
from Api.errors import errors # noqa: F401
22 changes: 22 additions & 0 deletions Api/core.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env python3
from connection import Connection
from flask import Blueprint, Flask
from flask_restx import Api

authorizations = {
"Token": {"type": "apiKey", "in": "header", "name": "X-API-KEY"},
"Bearer": {"type": "apiKey", "in": "header", "name": "Authorization"},
"UserPass": {"type": "basic"},
}

conn = Connection()
api_v1 = Blueprint("api", __name__, url_prefix="/api")
api = Api(
api_v1,
version="2.0.0",
title="Simple Secrets Manager",
description="Secrets management simplified",
authorizations=authorizations,
)
app = Flask(__name__)
app.register_blueprint(api_v1)
8 changes: 4 additions & 4 deletions Api/errors/errors.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
#!/usr/bin/env python3
from Api.api import app
from flask import jsonify
from Api.core import app


@app.errorhandler(404)
def not_found(e):
def not_found(_error):
return jsonify(error="Resource not found"), 404


@app.errorhandler(Exception)
def server_error(e):
app.logger.exception(e)
def server_error(error):
app.logger.exception(error)
return jsonify(error="Server error. Contact administrator"), 500
2 changes: 1 addition & 1 deletion Api/resources/audit/audit_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from flask_restx import Resource

from Api.api import api, conn
from Api.core import api, conn
from Api.resources.helpers import resolve_project_config
from Api.serialization import oid_to_str
from Access.is_auth import with_token, require_scope
Expand Down
2 changes: 1 addition & 1 deletion Api/resources/auth/onboarding_resource.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
from flask_restx import Resource

from Api.api import api, conn
from Api.core import api, conn

onboarding_ns = api.namespace("onboarding", description="First-time setup")

Expand Down
2 changes: 1 addition & 1 deletion Api/resources/auth/tokens_resource.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# Token Authentication API Resource
from flask_restx import fields, Resource
from Api.api import api, conn
from Api.core import api, conn
from Access.is_auth import userpass

# tokens Namespace
Expand Down
2 changes: 1 addition & 1 deletion Api/resources/auth/tokens_v2_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from flask import g
from flask_restx import Resource, inputs

from Api.api import api, conn
from Api.core import api, conn
from Api.resources.helpers import resolve_project_config
from Access.is_auth import with_token, require_scope, audit_event

Expand Down
2 changes: 1 addition & 1 deletion Api/resources/auth/userpass_resource.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
from flask_restx import fields, Resource

from Api.api import api, conn
from Api.core import api, conn
from Access.is_auth import require_token, require_scope

userpass_ns = api.namespace(
Expand Down
Loading