kglogowski / client-server-communication
Library to communication between client and server
Installs: 180
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=7.2.0
- ext-json: *
- ext-pdo: *
- doctrine/doctrine-bundle: ^1.11.1
- doctrine/doctrine-cache-bundle: ^1.3
- doctrine/doctrine-migrations-bundle: ^1.3
- doctrine/orm: ^2.6.3
- friendsofsymfony/rest-bundle: 2.5.0
- guzzlehttp/guzzle: ^6.3
- jms/serializer: ^3.0
- jms/serializer-bundle: ^3.3
- lcobucci/jwt: ^3.2
- symfony/framework-bundle: ^4.2
- symfony/monolog-bundle: ^3.3
- symfony/security-bundle: ^4.2
- symfony/symfony: ^4.2
- symfony/translation: ^4.2
- symfony/validator: ^4.2
Requires (Dev)
- symfony/phpunit-bridge: ^4.2
This package is not auto-updated.
Last update: 2025-04-09 01:29:18 UTC
README
-
Run command:
composer require kglogowski/client-server-communication "@dev"
-
Add to Kernel:
$bundles = [ ... new CSC\CSCBundle(), new JMS\SerializerBundle\JMSSerializerBundle(), new FOS\RestBundle\FOSRestBundle(), ];
-
Configure your config.yml
fos_rest: routing_loader: default_format: json include_format: true param_fetcher_listener: force body_listener: true allowed_methods_listener: true view: view_response_listener: 'force' formats: json: true exception: enabled: true exception_controller: 'csc.rest.controller.exception:showAction' format_listener: rules: - { path: '^/', priorities: ['json'], fallback_format: json, prefer_extension: false } service: view_handler: fos_rest.view_handler.default
-
Configure route
#Example pager admin.invoice.pager: path: /invoices methods: [GET] defaults: _controller: "InspectorBundle:Invoice:pager" entityName: 'InspectorBundle\Entity\Invoice\Invoice' methodName: 'listInvoice' availableFilter: ['partner','created_at','payment_deadline_at','sold_at','delivery_at'] sortAvailable: ['partner','created_at','payment_deadline_at','sold_at','delivery_at'] #Example post admin.invoice.post: path: /invoices methods: [POST] defaults: _controller: "InspectorBundle:Invoice:post" entityName: 'InspectorBundle\Entity\Invoice\Invoice' validation: ['Post'] insertable: ['partner_id','campaigns','delivered_at','sold_at','description','name','vat','days_to_pay'] #Example put admin.invoice.put: path: /invoices/{id} methods: [PUT] requirements: id: '\d+' defaults: _controller: "InspectorBundle:Invoice:put" entityName: 'InspectorBundle\Entity\Invoice\Invoice' validation: ['Put'] updatable: ['delivered_at','sold_at','description','name','vat','days_to_pay'] #Example custom processor admin.invoice.bulk-pay: path: /invoices/bulk-pay methods: [PUT] defaults: _controller: "InspectorBundle:Invoice:bulkPay" entityName: 'InspectorBundle\Entity\Invoice\Invoice' requestProcessor: 'InspectorBundle\Server\Processor\Request\InvoicePayProcessor' #Service
-
Configure security.yml:
#Example security: encoders: AppBundle\Entity\User: id: csc.rest.security.encoder.password providers: user_token: entity: class: AppBundle:User\User property: login user: id: app.rest.security.provider.token_user firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false user_token: pattern: ^/v1/auth/token$ provider: user_token guard: authenticators: - app.rest.security.authenticator.credential user: pattern: ^/v1(/|/auth/token/clear$) provider: user guard: authenticators: - app.rest.security.authenticator.token - app.rest.security.authenticator.sso entry_point: app.rest.security.authenticator.token main: pattern: ^/ anonymous: ~
-
Authenticators
//Example authenticators: class RestCredentialAuthenticator extends BaseAuthenticator { public function getAccessTokenClass(): string { return UserAccessToken::class; } } class TokenAuthenticator extends BaseAuthenticator { /** * @return string */ public function getAccessTokenClass(): string { return UserAccessToken::class; } }
-
Provider
class TokenUserProvider extends BaseProvider { public function loadUserByUsername($username) { //Implement own method from repository } public function supportsClass($class) { return User::class === $class; } }
-
Add monolog:
# Monolog monolog: channels: ['raw_request', 'raw_response', 'auth'] use_microseconds: true