Add GET /api/v1/specialties/doctor-counts?city_id= returning every active specialty with number_of_doctors (distinct doctors via doctor_specialties, scoped by doctor_cities when city_id is given). Make /api/v1/specialties GET public. Powers the /specialties page count. Docs updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
102 lines
4.7 KiB
YAML
102 lines
4.7 KiB
YAML
security:
|
|
password_hashers:
|
|
App\Auth\Entity\User:
|
|
algorithm: auto
|
|
Symfony\Component\Security\Core\User\InMemoryUser:
|
|
algorithm: bcrypt
|
|
|
|
providers:
|
|
app_user_provider:
|
|
entity:
|
|
class: App\Auth\Entity\User
|
|
property: mobileNumber
|
|
api_doc_provider:
|
|
memory:
|
|
users:
|
|
'%env(API_DOC_USERNAME)%':
|
|
password: '%env(API_DOC_PASSWORD)%'
|
|
roles: ['ROLE_ADMIN']
|
|
|
|
firewalls:
|
|
dev:
|
|
pattern: ^/(_profiler|_wdt|assets|build)/
|
|
security: false
|
|
|
|
health:
|
|
pattern: ^/health$
|
|
security: false
|
|
|
|
api_doc:
|
|
pattern: ^/api/doc
|
|
http_basic:
|
|
realm: "ClinicPro API Documentation"
|
|
provider: api_doc_provider
|
|
|
|
public_endpoints:
|
|
pattern: ^/(api/v1/user/(send-code|verify-code|register|otp-login|reset-password)|oauth/token$|session/token|api/v1/categorys/|api/v1/doctors$|api/v1/clinics$|api/v1/clinic/doctor-list/|api/v1/clinic/[^/]+/addresses$|api/v1/clinic-pro/doctor-addresses/|api/v1/appointment-slots|api/v1/appointment-settings/month-availability/|api/v1/comments/|api/v1/rate/[^/]+$|api/v1/specialties|api/v1/blogs$|api/v1/clinic-invitation/|api/v1/pre-registration$)
|
|
stateless: true
|
|
security: false
|
|
|
|
payment_callback:
|
|
pattern: ^/api/v1/(payment|subscription-payment)/callback/
|
|
stateless: true
|
|
security: false
|
|
|
|
api:
|
|
pattern: ^/(api|oauth|file/upload)/
|
|
stateless: true
|
|
provider: app_user_provider
|
|
custom_authenticators:
|
|
- App\Auth\Security\PasswordAuthenticator
|
|
jwt: ~
|
|
|
|
access_control:
|
|
- { path: ^/health$, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/doc, roles: ROLE_ADMIN }
|
|
- { path: ^/api/v1/user/send-code, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/user/verify-code, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/user/register, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/user/login, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/user/otp-login, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/user/reset-password, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/appointment-slots, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/appointment-settings/month-availability/, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/comments/, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/specialties, methods: [GET], roles: PUBLIC_ACCESS }
|
|
- path: '^/api/v1/rate/[^/]+$'
|
|
methods: [GET]
|
|
roles: PUBLIC_ACCESS
|
|
- { path: ^/api/v1/blogs$, roles: PUBLIC_ACCESS }
|
|
- path: '^/api/v1/blog/[^/]+$'
|
|
methods: [GET]
|
|
roles: PUBLIC_ACCESS
|
|
- { path: ^/oauth/token$, roles: PUBLIC_ACCESS }
|
|
- { path: ^/oauth/token/refresh$, roles: PUBLIC_ACCESS }
|
|
- { path: ^/session/token, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/payment/callback/, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/subscription-payment/callback/, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/categorys/, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/doctors$, roles: PUBLIC_ACCESS }
|
|
- path: '^/api/v1/doctor/[^/]+$'
|
|
methods: [GET]
|
|
roles: PUBLIC_ACCESS
|
|
- { path: ^/api/v1/clinic/doctor-list/, roles: PUBLIC_ACCESS }
|
|
- { path: '^/api/v1/clinic/[^/]+/addresses$', roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/clinic-pro/doctor-addresses/, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/clinics$, roles: PUBLIC_ACCESS }
|
|
- path: '^/api/v1/clinic/[^/]+$'
|
|
methods: [GET]
|
|
roles: PUBLIC_ACCESS
|
|
- { path: ^/api/v1/clinic-invitation/, roles: PUBLIC_ACCESS }
|
|
- { path: ^/api/v1/user/\d+$, methods: [DELETE], roles: ROLE_ADMIN }
|
|
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY }
|
|
- { path: ^/oauth/userinfo, roles: IS_AUTHENTICATED_FULLY }
|
|
- { path: ^/oauth/logout, roles: IS_AUTHENTICATED_FULLY }
|
|
|
|
when@test:
|
|
security:
|
|
password_hashers:
|
|
App\Auth\Entity\User:
|
|
algorithm: auto
|
|
cost: 4
|