Skip to content

Commit 7be488a

Browse files
authored
Merge pull request #69 from zecrypt-io/preview
Preview update from main
2 parents 743ef58 + 66f761c commit 7be488a

File tree

14 files changed

+117
-29
lines changed

14 files changed

+117
-29
lines changed

packages/backend-server/app/api/v1/web/auth/api.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ async def get_keys_api(user: UserDetails = Depends(get_current_user)):
7878

7979
@router.post(UPDATE_KEYS)
8080
async def update_keys_api(
81-
request: Request, payload: UpdateKeys, user: UserDetails = Depends(get_current_user)
81+
request: Request,
82+
payload: UpdateKeys,
83+
background_tasks: BackgroundTasks,
84+
user: UserDetails = Depends(get_current_user),
8285
):
83-
return update_keys(db, user, payload.model_dump())
86+
return update_keys(db, user, payload.model_dump(), background_tasks)

packages/backend-server/app/api/v1/web/auth/services.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ def create_user(request, db, auth_data, back_ground_tasks):
9999
"profile_url": auth_data.get("profile_image_url"),
100100
"language": "en",
101101
"workspace_ids": [workspace_id],
102+
"plan": "free",
102103
"auth": {
103104
"has_password": auth_data.get("has_password"),
104105
"otp_auth_enabled": auth_data.get("otp_auth_enabled"),
@@ -191,6 +192,7 @@ def verify_two_factor_auth(request, db, payload, response, back_ground_tasks):
191192
"language": "en",
192193
"token": token,
193194
"refresh_token": refresh_token,
195+
"plan":user.get("plan")
194196
}
195197
return response_helper(200, translate("auth.two_factor_auth_verified"), data=data)
196198

@@ -205,7 +207,7 @@ def get_keys(db, user_id):
205207
)
206208

207209

208-
def update_keys(db, user, payload):
210+
def update_keys(db, user, payload, background_tasks):
209211
data = {
210212
"user_id": user.get("user_id"),
211213
"public_key": payload.get("public_key"),
@@ -214,4 +216,6 @@ def update_keys(db, user, payload):
214216
if user_keys_manager.find_one(db, {"user_id": user.get("user_id")}):
215217
return response_helper(400, translate("auth.keys_already_exist"))
216218
user_keys_manager.insert_one(db, data)
219+
# background_tasks.add_task(send_welcome_email, db, user)
217220
return response_helper(200, translate("auth.keys_updated"))
221+

packages/backend-server/app/api/v1/web/projects/services.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ def get_tags(db, project_id):
133133

134134

135135
def add_project_key(db, user_id, project_id, workspace_id, project_key):
136-
137136
project_keys_manager.insert_one(
138137
db,
139138
{

packages/backend-server/app/api/v1/web/route_constants.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@
4343
NOTES = BASE_URL + "/notes"
4444
NOTE_DETAILS = BASE_URL + "/notes/{doc_id}"
4545

46+
# ENV
47+
ENV = BASE_URL + "/env"
48+
ENV_DETAILS = BASE_URL + "/env/{doc_id}"
49+
4650
# Dashboard
4751
DASHBOARD_OVERVIEW = "/{workspace_id}/{project_id}/dashboard/overview"
4852
DASHBOARD_RECENT_ACTIVITY = "/{workspace_id}/{project_id}/dashboard/recent-activity"

packages/backend-server/app/api/v1/web/secrets/api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from app.api.v1.web.secrets.ssh_keys import api as ssh_keys_router
1111
from app.api.v1.web.secrets.notes import api as notes_router
1212
from app.api.v1.web.secrets.password_history import api as password_history_router
13+
from app.api.v1.web.secrets.environment import api as env_router
1314

1415
secrets_router = APIRouter()
1516

@@ -29,3 +30,4 @@
2930
secrets_router.include_router(
3031
password_history_router.router, tags=["Secrets: Password History"]
3132
)
33+
secrets_router.include_router(env_router.router, tags=["Secrets: Env"])
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
from fastapi import APIRouter, Request, Depends, BackgroundTasks
2+
3+
from app.api.v1.web.secrets.environment.schema import UpdateEnv, AddEnv
4+
from app.api.v1.web.secrets.services import (
5+
delete_secret,
6+
update_secret,
7+
add_secret,
8+
get_secrets,
9+
)
10+
from app.api.v1.web.auth.schema import UserDetails
11+
from app.framework.permission_services.service import get_current_user
12+
from app.api.v1.web.route_constants import ENV_DETAILS, ENV
13+
from app.utils.constants import SECRET_TYPE_ENV as data_type
14+
15+
router = APIRouter()
16+
17+
18+
@router.get(ENV)
19+
async def get_env_api(
20+
request: Request,
21+
workspace_id: str,
22+
project_id: str,
23+
user: UserDetails = Depends(get_current_user),
24+
):
25+
return await get_secrets(request, user, data_type)
26+
27+
28+
@router.post(ENV)
29+
async def create_env_api(
30+
request: Request,
31+
workspace_id: str,
32+
project_id: str,
33+
payload: AddEnv,
34+
background_tasks: BackgroundTasks,
35+
user: UserDetails = Depends(get_current_user),
36+
):
37+
return await add_secret(
38+
request, user, data_type, payload.model_dump(), background_tasks
39+
)
40+
41+
42+
@router.put(ENV_DETAILS)
43+
async def update_env_api(
44+
request: Request,
45+
workspace_id: str,
46+
project_id: str,
47+
doc_id: str,
48+
payload: UpdateEnv,
49+
background_tasks: BackgroundTasks,
50+
user: UserDetails = Depends(get_current_user),
51+
):
52+
return await update_secret(
53+
request, user, data_type, payload.model_dump(), background_tasks
54+
)
55+
56+
57+
@router.delete(ENV_DETAILS)
58+
async def delete_env_api(
59+
request: Request,
60+
workspace_id: str,
61+
project_id: str,
62+
doc_id: str,
63+
background_tasks: BackgroundTasks,
64+
user: UserDetails = Depends(get_current_user),
65+
):
66+
return await delete_secret(request, user, data_type, background_tasks)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from typing import Optional, List, Any
2+
from pydantic import Field
3+
4+
5+
from app.framework.mongo_db.base_model import BaseModel
6+
7+
8+
class AddEnv(BaseModel):
9+
title: str
10+
data: Optional[Any] = None
11+
notes: Optional[str] = None
12+
tags: Optional[List[str]] = Field(default_factory=list)
13+
14+
15+
class UpdateEnv(BaseModel):
16+
title: Optional[str] = None
17+
data: Optional[Any] = None
18+
notes: Optional[str] = None
19+
tags: Optional[List[str]] = None

packages/backend-server/app/api/v1/web/secrets/services.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22
from app.utils.utils import create_uuid, response_helper, filter_payload
33
from app.managers import secrets as secrets_manager
44
from app.utils.i8ns import translate
5-
from fastapi import BackgroundTasks
65
from app.api.v1.web.project_activity.services import add_recent_activity
76
from app.framework.valkey import services as valkey_services
87

98

10-
119
async def get_secrets(request, user, data_type):
1210
db = user.get("db")
1311
page = request.query_params.get("page", None)
@@ -19,7 +17,9 @@ async def get_secrets(request, user, data_type):
1917
}
2018
if valkey_services.check_secret_exists(project_id, data_type, query):
2119
data = valkey_services.get_secret(project_id, data_type, query)
22-
return response_helper(200, translate(f"{data_type}.list"), data=data, count=len(data))
20+
return response_helper(
21+
200, translate(f"{data_type}.list"), data=data, count=len(data)
22+
)
2323

2424
if page and limit:
2525
skip = (page - 1) * limit

packages/backend-server/app/framework/valkey/client.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,13 @@
77
valkey_client = valkey.Valkey.from_url(url=settings.VALKEY_URL)
88

99

10-
1110
class ValkeyClient:
1211
def __init__(self):
1312
"""
1413
Initialize a new instance of redis client
1514
"""
1615
self.client = valkey_client
1716

18-
1917
def add_key_to_hash(self, name, key, value):
2018
"""
2119
Add a new key-value pair to a hash
@@ -40,7 +38,6 @@ def remove_key_from_hash(self, name, key):
4038
except Exception:
4139
pass
4240

43-
4441
def get_from_hash(self, name, key):
4542
"""
4643
Get a value from a hash
@@ -62,7 +59,6 @@ def field_exists_in_hash(self, name, key):
6259
"""
6360
return self.client.hexists(name, key)
6461

65-
6662
def get_all_keys_from_hash(self, name):
6763
"""
6864
Get all keys from a hash
@@ -72,8 +68,6 @@ def get_all_keys_from_hash(self, name):
7268
keys = list(self.client.hkeys(name))
7369
return [key.decode("utf-8") for key in keys]
7470

75-
76-
7771
def delete_hash(self, hash):
7872
try:
7973
if isinstance(hash, str):

packages/backend-server/app/framework/valkey/services.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,22 @@
44
valkey_client = ValkeyClient()
55

66

7-
8-
def add_secret( project_id, secret_type, query, secret_value):
7+
def add_secret(project_id, secret_type, query, secret_value):
98
query_hash = generate_query_hash(query)
109
valkey_client.add_key_to_hash(
1110
f"{project_id}:{secret_type}", query_hash, secret_value
1211
)
1312

1413

15-
def get_secret( project_id, secret_type, query):
14+
def get_secret(project_id, secret_type, query):
1615
query_hash = generate_query_hash(query)
17-
return valkey_client.get_from_hash(
18-
f"{project_id}:{secret_type}", query_hash
19-
)
16+
return valkey_client.get_from_hash(f"{project_id}:{secret_type}", query_hash)
2017

2118

22-
def delete_secret( project_id, secret_type):
19+
def delete_secret(project_id, secret_type):
2320
valkey_client.delete_hash(f"{project_id}:{secret_type}")
2421

25-
def check_secret_exists( project_id, secret_type, query):
22+
23+
def check_secret_exists(project_id, secret_type, query):
2624
query_hash = generate_query_hash(query)
27-
return valkey_client.field_exists_in_hash(
28-
f"{project_id}:{secret_type}", query_hash
29-
)
25+
return valkey_client.field_exists_in_hash(f"{project_id}:{secret_type}", query_hash)

0 commit comments

Comments
 (0)