Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
4ad1891
feat(role): add RolePermission model and migration; include confident…
zeedivx Jan 19, 2026
5da0a07
feat(role): preload permissions in role repository queries and enhanc…
zeedivx Jan 19, 2026
06fa7d7
feat(service): validate service ID format in GetService method
zeedivx Jan 19, 2026
8deea76
feat(tabs): implement Tabs component with List, Trigger, and Content …
zeedivx Jan 19, 2026
f717a7e
feat(permission): add bulk update and delete methods for user permiss…
zeedivx Jan 19, 2026
2d035e4
feat(role): add JSON tags to BaseModel and Role models for improved A…
zeedivx Jan 19, 2026
22a671a
chore: gen doc
zeedivx Jan 19, 2026
21c2021
chore: remove unused focus styles and Lucide icon configurations from…
zeedivx Jan 19, 2026
c30c4e4
refactor(input): simplify Input component by removing unused props an…
zeedivx Jan 19, 2026
1dce781
style(button, input): enhance button and input components with improv…
zeedivx Jan 19, 2026
17c15ee
style(button): enhance button styles with disabled states and improve…
zeedivx Jan 19, 2026
7d18e55
chore: remove DeleteServiceModal, EditServiceModal, and ServiceSecret…
zeedivx Jan 19, 2026
50dc326
refactor(ServiceRow): simplify component by removing modals and integ…
zeedivx Jan 19, 2026
61b6885
feat(FormField): add new FormField component for structured form layo…
zeedivx Jan 19, 2026
f2d46aa
feat(Switch): introduce a new Switch component with customizable chec…
zeedivx Jan 19, 2026
8fa104c
feat: add @radix-ui/react-tabs and sonner dependencies; integrate Toa…
zeedivx Jan 19, 2026
ff67a33
refactor(api): rename and enhance error handling functions to improve…
zeedivx Jan 19, 2026
7f24c04
chore: format
zeedivx Jan 19, 2026
448b6d2
feat(CreateServiceModal): integrate FormField component for improved …
zeedivx Jan 19, 2026
8c2b0d0
feat(ServicePage): implement service management page with overview, p…
zeedivx Jan 19, 2026
7be0d74
feat(ServiceForm): add disabled state to sections and buttons for def…
zeedivx Jan 19, 2026
6196eeb
fix(RoleService): update permissions associations only when explicitl…
zeedivx Jan 19, 2026
9c73c17
fix(RoleService): improve error handling in propagateRoleChanges meth…
zeedivx Jan 19, 2026
5664bda
fix(RoleService): enhance role assignment logic to handle global reso…
zeedivx Jan 19, 2026
51dbd0d
feat: enhance accessibility by adding aria-labels to various componen…
zeedivx Jan 19, 2026
fc1eb03
fix(Switch): improve click handling to prevent state changes when dis…
zeedivx Jan 19, 2026
18a35eb
refactor(EditUserModal): integrate FormField component for username a…
zeedivx Jan 21, 2026
5822025
feat(EditUserModal): replace checkbox with Switch component for activ…
zeedivx Jan 21, 2026
0a40a1a
feat: add Biome configuration file and integrate Biome for linting an…
zeedivx Jan 21, 2026
78776a6
chore: format & lint
zeedivx Jan 21, 2026
0e9fc18
chore: update Biome configuration for improved formatting and linting…
zeedivx Jan 21, 2026
c22ab86
fix(handler): add error handling for invalid ID format and request bo…
zeedivx Jan 21, 2026
a10ed14
fix(handler): refactor service ID validation into a separate function…
zeedivx Jan 21, 2026
8208a7d
fix(permission, role): update resource field to be omitempty in Creat…
zeedivx Jan 21, 2026
59ca700
fix(role): adjust role propagation logic to handle nil permissions, e…
zeedivx Jan 21, 2026
d3ab5b3
fix(api): add 400 error response for invalid ID format and require bi…
zeedivx Jan 21, 2026
eaf8874
Update apps/web/src/lib/api/utils.ts
zeedivx Jan 21, 2026
38c558d
chore: add formatting step to Makefile for improved code consistency …
zeedivx Jan 21, 2026
5933c98
fix(biome): remove redundant entries in biome.json and ensure proper …
zeedivx Jan 21, 2026
04e8cf2
refactor(biome): remove extensive linter rules from biome.json for cl…
zeedivx Jan 21, 2026
3046800
fix(sidebar): ensure mobile sidebar closes on route change by updatin…
zeedivx Jan 21, 2026
076db23
chore(husky): add pre-commit hook for linting with bun and update pac…
zeedivx Jan 21, 2026
84169c7
fix(ServiceForm): handle empty service properties and improve redirec…
zeedivx Jan 21, 2026
cfcf1ac
refactor(services): replace custom copy functionality with reusable C…
zeedivx Jan 21, 2026
ef91157
refactor(ServiceRow): remove unused utility import to streamline comp…
zeedivx Jan 21, 2026
5aa7ed9
fix(repository): add ordering by creation date to user retrieval quer…
zeedivx Jan 21, 2026
b2b0c9e
refactor(AuthorizePage): simplify consent handling logic by extractin…
zeedivx Jan 21, 2026
87c5d77
chore(dependencies): remove unused eslint and prettier dependencies f…
zeedivx Jan 21, 2026
1fa50f3
fix(CreateServiceModal): improve description field error handling by …
zeedivx Jan 21, 2026
85e2234
📝 Add docstrings to `feat/services-subpage`
coderabbitai[bot] Jan 21, 2026
bb61c27
fix(ServiceRow): add cursor pointer to CopyButton for better user int…
zeedivx Jan 21, 2026
bbb252e
Merge pull request #50 from Anvoria/coderabbitai/docstrings/b2b0c9e
zeedivx Jan 21, 2026
2d8573e
fix(biome.json): update noBlankTarget security rule from 'off' to 'wa…
zeedivx Jan 21, 2026
8547946
fix(ServiceRow): conditionally render CopyButton only when client ID …
zeedivx Jan 21, 2026
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
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@ api-frontend: ## Convert to OpenAPI 3, generate TS types and Zod schemas
@cd apps/web && bunx kubb generate

@echo "Cleaning up..."
@cd apps/web && bun format
@rm apps/web/src/lib/api/openapi.json
@echo "Frontend generation complete!"
98 changes: 87 additions & 11 deletions apps/api/docs/docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,12 @@ const docTemplate = `{
]
}
},
"400": {
"description": "Invalid ID format",
"schema": {
"$ref": "#/definitions/github_com_Anvoria_authly_internal_utils.APIError"
}
},
"404": {
"description": "Service not found",
"schema": {
Expand Down Expand Up @@ -711,6 +717,12 @@ const docTemplate = `{
]
}
},
"400": {
"description": "Invalid ID format",
"schema": {
"$ref": "#/definitions/github_com_Anvoria_authly_internal_utils.APIError"
}
},
"404": {
"description": "Service not found",
"schema": {
Expand Down Expand Up @@ -744,6 +756,12 @@ const docTemplate = `{
"$ref": "#/definitions/github_com_Anvoria_authly_internal_utils.Response"
}
},
"400": {
"description": "Invalid ID format",
"schema": {
"$ref": "#/definitions/github_com_Anvoria_authly_internal_utils.APIError"
}
},
"404": {
"description": "Service not found",
"schema": {
Expand Down Expand Up @@ -1925,9 +1943,6 @@ const docTemplate = `{
"service_id"
],
"properties": {
"bitmask": {
"type": "integer"
},
"description": {
"type": "string"
},
Expand All @@ -1939,6 +1954,12 @@ const docTemplate = `{
"maxLength": 64,
"minLength": 3
},
"permissions": {
"type": "array",
"items": {
"$ref": "#/definitions/internal_domain_role.RolePermissionRequest"
}
},
"priority": {
"type": "integer"
},
Expand All @@ -1951,12 +1972,13 @@ const docTemplate = `{
"type": "object",
"properties": {
"bitmask": {
"description": "Deprecated for granular resources, used for global",
"type": "integer"
},
"createdAt": {
"created_at": {
"type": "string"
},
"deletedAt": {
"deleted_at": {
"$ref": "#/definitions/gorm.DeletedAt"
},
"description": {
Expand All @@ -1965,19 +1987,26 @@ const docTemplate = `{
"id": {
"type": "string"
},
"isDefault": {
"is_default": {
"type": "boolean"
},
"name": {
"type": "string"
},
"permissions": {
"description": "Associations",
"type": "array",
"items": {
"$ref": "#/definitions/internal_domain_role.RolePermission"
}
},
"priority": {
"type": "integer"
},
"serviceID": {
"service_id": {
"type": "string"
},
"updatedAt": {
"updated_at": {
"type": "string"
}
}
Expand All @@ -1990,6 +2019,47 @@ const docTemplate = `{
}
}
},
"internal_domain_role.RolePermission": {
"type": "object",
"properties": {
"bitmask": {
"type": "integer"
},
"created_at": {
"type": "string"
},
"deleted_at": {
"$ref": "#/definitions/gorm.DeletedAt"
},
"id": {
"type": "string"
},
"resource": {
"description": "NULL = global",
"type": "string"
},
"role_id": {
"type": "string"
},
"updated_at": {
"type": "string"
}
}
},
"internal_domain_role.RolePermissionRequest": {
"type": "object",
"required": [
"bitmask"
],
"properties": {
"bitmask": {
"type": "integer"
},
"resource": {
"type": "string"
}
}
},
"internal_domain_role.RolesDataResponse": {
"type": "object",
"properties": {
Expand All @@ -2004,9 +2074,6 @@ const docTemplate = `{
"internal_domain_role.UpdateRoleRequest": {
"type": "object",
"properties": {
"bitmask": {
"type": "integer"
},
"description": {
"type": "string"
},
Expand All @@ -2018,6 +2085,12 @@ const docTemplate = `{
"maxLength": 64,
"minLength": 3
},
"permissions": {
"type": "array",
"items": {
"$ref": "#/definitions/internal_domain_role.RolePermissionRequest"
}
},
"priority": {
"type": "integer"
}
Expand All @@ -2041,6 +2114,9 @@ const docTemplate = `{
"type": "string"
}
},
"confidential": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 1000
Expand Down
98 changes: 87 additions & 11 deletions apps/api/docs/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -647,6 +647,12 @@
]
}
},
"400": {
"description": "Invalid ID format",
"schema": {
"$ref": "#/definitions/github_com_Anvoria_authly_internal_utils.APIError"
}
},
"404": {
"description": "Service not found",
"schema": {
Expand Down Expand Up @@ -704,6 +710,12 @@
]
}
},
"400": {
"description": "Invalid ID format",
"schema": {
"$ref": "#/definitions/github_com_Anvoria_authly_internal_utils.APIError"
}
},
"404": {
"description": "Service not found",
"schema": {
Expand Down Expand Up @@ -737,6 +749,12 @@
"$ref": "#/definitions/github_com_Anvoria_authly_internal_utils.Response"
}
},
"400": {
"description": "Invalid ID format",
"schema": {
"$ref": "#/definitions/github_com_Anvoria_authly_internal_utils.APIError"
}
},
"404": {
"description": "Service not found",
"schema": {
Expand Down Expand Up @@ -1918,9 +1936,6 @@
"service_id"
],
"properties": {
"bitmask": {
"type": "integer"
},
"description": {
"type": "string"
},
Expand All @@ -1932,6 +1947,12 @@
"maxLength": 64,
"minLength": 3
},
"permissions": {
"type": "array",
"items": {
"$ref": "#/definitions/internal_domain_role.RolePermissionRequest"
}
},
"priority": {
"type": "integer"
},
Expand All @@ -1944,12 +1965,13 @@
"type": "object",
"properties": {
"bitmask": {
"description": "Deprecated for granular resources, used for global",
"type": "integer"
},
"createdAt": {
"created_at": {
"type": "string"
},
"deletedAt": {
"deleted_at": {
"$ref": "#/definitions/gorm.DeletedAt"
},
"description": {
Expand All @@ -1958,19 +1980,26 @@
"id": {
"type": "string"
},
"isDefault": {
"is_default": {
"type": "boolean"
},
"name": {
"type": "string"
},
"permissions": {
"description": "Associations",
"type": "array",
"items": {
"$ref": "#/definitions/internal_domain_role.RolePermission"
}
},
"priority": {
"type": "integer"
},
"serviceID": {
"service_id": {
"type": "string"
},
"updatedAt": {
"updated_at": {
"type": "string"
}
}
Expand All @@ -1983,6 +2012,47 @@
}
}
},
"internal_domain_role.RolePermission": {
"type": "object",
"properties": {
"bitmask": {
"type": "integer"
},
"created_at": {
"type": "string"
},
"deleted_at": {
"$ref": "#/definitions/gorm.DeletedAt"
},
"id": {
"type": "string"
},
"resource": {
"description": "NULL = global",
"type": "string"
},
"role_id": {
"type": "string"
},
"updated_at": {
"type": "string"
}
}
},
"internal_domain_role.RolePermissionRequest": {
"type": "object",
"required": [
"bitmask"
],
"properties": {
"bitmask": {
"type": "integer"
},
"resource": {
"type": "string"
}
}
},
"internal_domain_role.RolesDataResponse": {
"type": "object",
"properties": {
Expand All @@ -1997,9 +2067,6 @@
"internal_domain_role.UpdateRoleRequest": {
"type": "object",
"properties": {
"bitmask": {
"type": "integer"
},
"description": {
"type": "string"
},
Expand All @@ -2011,6 +2078,12 @@
"maxLength": 64,
"minLength": 3
},
"permissions": {
"type": "array",
"items": {
"$ref": "#/definitions/internal_domain_role.RolePermissionRequest"
}
},
"priority": {
"type": "integer"
}
Expand All @@ -2034,6 +2107,9 @@
"type": "string"
}
},
"confidential": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 1000
Expand Down
Loading
Loading