Git Product home page Git Product logo

api's Introduction

DotKernel 3 Logo

GitHub issues GitHub forks GitHub stars GitHub license

Packagist Version (including pre-releases) PHP from Packagist

DotKernel 3 Official Documentation Repository

Documentation ( version 1.0 , based on Zend namespace and Zend Expressive )

Roadmap April 2020

TARGET:

NEW APPLICATIONS

  • api-mail ? service to send emails only
  • PINGU queue system, based on Redis + swoole + Mezzio + deployed as a standalone service

Package versioning:

  1. version 1.x related to Zend Framework and Expressive [deprecated]
  2. version 2.x related to Mezzio and Laminas, without modification of the flow. No new functions, only compatibility [deprecated]
  3. version 3.x related to the new Mezzio and Laminas architecture , in preparation for DK3 version 3

Documentation on each package please !!!!

Requirements for V 3:

  • bump require version of PHP to 7.4
  • doctrine 2.7.x ( latest)
  • twig 3.x (latest)
  • update documentation to reflect changes ( readme.md)

How to:

  • create the branch 3.0 from 2.0 !!!
  • make default branch 3.0 ( not master anymore )
  • enjoy

Package list: see the checllist https://github.com/dotkernel/dotkernel/blob/master/checklist-v3-packages.md

api's People

Contributors

alexmerlin avatar alexmerlin1985 avatar arhimede avatar bidi47 avatar calin23 avatar cpintiuta avatar marioradu avatar onitaandrei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

api's Issues

RestDispatchTrait method fromObject not used

The fromObject method from Api\App\RestDispatchTrait is not used. What is actually used is the fromObject method from Mezzio\Hal\ResourceGenerator.
We can remove the unused method from the Api\App\RestDispatchTrait .

add extra Headers

https://securityheaders.com/

Check if there are realy needed the add extra headers:

Strict-Transport-Security
Content-Security-Policy
X-Frame-Options
X-Content-Type-Options
Referrer-Policy
Permissions-Policy

Consistentcy in user object : IDENTITY

  1. league/oauth2-server rename the username to idnetity
    and be sure is consistent in API too
    or in admin too

  2. the fiels "is_deleted' must be consistent all over the place
    in all projects

@mario please check all projects which implement 2 types of authertifications

check closed issues from frontend

If there is a coomon issue that was fixed in frotnend, check to see if need to be fixed in api too

and OPEN an ISSUE in API issue tracker

Nesting tag issue in templates

the

tag doesn't accept nesting. remove the < p > tags before the 'Hi' line and the < /p > after it

recover-identity-requested.html.twig
<p> <p>Hi {{ user.detail.firstname ?? user.getDetail().getEmail() ?? user.getIdentity() }},</p> </p>

reset-password-requested.html.twig
<p> <p>Hi {{ user.detail.firstname ?? user.identity }},</p> </p>

Doctrine migrations:diff will generate a migration file that will drop the oauth tables.

Considering the following tables that are not mapped anywhere in the Doctrine ORM.

  • oauth_access_tokens
  • oauth_auth_codes
  • oauth_clients
  • oauth_personal_access_clients
  • oauth_refresh_tokens
  • oauth_scopes

Runing vendor/bin/doctrine-migrations migrations:diff will only create a migration file that will drop the tables specified above.

We need to tell Doctrine to ignore those custom tables as specified in their documentation.

fix console application

It tries to use libraries that don't even exist anymore.
Do the fix after dot-console has been updated to use laminas-cli.

Error log filename not correct

Because writer stream is specified in ./config/autoload/error-handling.global.php
sprintf('%s/../../log/error-log-%s.log', __DIR__, date('Y-m-d'))
it will be cached in ./data/cache/config-cache.php and the date() in filename it will remain the date when config-cache.php was created.

Documentation credentials

The credentials from the /documentation route are not updated to reflect the last changes.

In the documentation for the /oauth2/generate the default credentials are :

{
  "grant_type": "password",
  "client_id": "dotkernel",
  "client_secret": "dotkernel",
  "scope": "api",
  "username": "[email protected]",
  "password": "dotkernel"
}

If we try them it will return a 401 Unauthorized error.

The "client_id" and "client_secret" should be changed to :

client_id : frontend
client_secret : frontend

if we want to login as a regular user, OR :

client_id : admin
client_secret : admin

if we want to login as an admin.

I didn't found the credentials to login as an admin, I only know the username, which is admin. Where can I find the password?

remove or replace #TODO

src/App/src/Entity/TimestampAwareTrait.php, line 92
src/App/src/Entity/UuidAwareTrait.php, line 34

Oauth custom messages

Since the league/oauth2-serve 8.2.3 , the message returned was changed

Let's creat a wrapper//middleware on top of OAuth to return custom messages

Implement dot-cli in v1

dot-console will be abandoned soon (because it is built on laminas-console, which was abandoned in Feb 2021), so we need dot-cli implemented in DotKernel API v1 as well.

admin register

What is the purpose of the POST /admin endpoint? (aka admin:register)
If we intend to keep it in the API, we better remove authentication completely - so it's easier for unauthorized people to make API calls.

reset password endpoint status 200

the API must return all the time

200 OK

 

even if the email was not found .

and the message should be :

Instead of:

Password reset mail has been successfully sent!
 

should be:

If there is an account associated with the email [email protected], an email containing password recovery instructions was sent to it.

Invalid FQCN in migration

Issue:
Unable to run migrations due to an invalid use in file data/doctrine/migrations/Version20191007122229.php.

Fix:
Replace:
use Api\App\Common\UuidOrderedTimeGenerator;
with
use Api\App\Entity\UuidOrderedTimeGenerator;

AccountActivateHandler.php POST

the last line has a call for the old location for email. this needs investigating as i can't be sure what the intended result should be

return $this->infoResponse(sprintf(Message::MAIL_SENT_USER_ACTIVATION, $user->getEmail()));

the 2nd parameter in sprintf should be either
$user->getIdentity()
OR
$user->getDetail()->getEmail()

User email vs identity

the User entity has no email property or getters/setters for it
but UserService still uses getEmail and setEmail

we need to discuss again how to handle identity
the user should have an email to be contacted, but identity can be a non-email string which would break e.g. the welcome email

Twig turns exceptions into error pages.

Since Twig has been implemented, when the API encounters an exception it parses the error via an error document and the JSON response header is missing. It should log the error in the error log (this part is already happening correctly), return 500 Internal server error as before (and - if running in development mode - output the error details directly w/o parsing them in a template).

ArraySerializable deprecated

ArraySerializable class used to extract data from entities is deprecated since laminas-hydrator version 3.0 and it will be removed starting with version 4.0 .
The package suggest the use of ArraySerializableHydrator instead.

Twig\Error\LoaderError when hit /documentation

reproduce :

  1. install
  2. hit localhost:8000 -> OK
  3. hit localhost:8000/documentation -> error

Twig\Error\LoaderError


Twig\Error\LoaderError raised in file /Users/codeconqueror/Sites/dotkernel-api/vendor/twig/twig/src/Loader/FilesystemLoader.php line 227:
Message: Unable to find template "@error/404.html.twig" (looked into: /Users/codeconqueror/Sites/dotkernel-api/src/App/src/../templates/error).
Stack Trace:
#0 /Users/codeconqueror/Sites/dotkernel-api/vendor/twig/twig/src/Loader/FilesystemLoader.php(131): Twig\Loader\FilesystemLoader->findTemplate('@error/404.html...')
#1 /Users/codeconqueror/Sites/dotkernel-api/vendor/twig/twig/src/Environment.php(261): Twig\Loader\FilesystemLoader->getCacheKey('@error/404.html...')
#2 /Users/codeconqueror/Sites/dotkernel-api/vendor/twig/twig/src/Environment.php(309): Twig\Environment->getTemplateClass('@error/404.html...')
#3 /Users/codeconqueror/Sites/dotkernel-api/vendor/twig/twig/src/Environment.php(277): Twig\Environment->load('@error/404.html...')
#4 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio-twigrenderer/src/TwigRenderer.php(111): Twig\Environment->render('@error/404.html...', Array)
#5 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Handler/NotFoundHandler.php(103): Mezzio\Twig\TwigRenderer->render('@error/404.html...', Array)
#6 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Handler/NotFoundHandler.php(72): Mezzio\Handler\NotFoundHandler->generateTemplatedResponse(Object(Mezzio\Twig\TwigRenderer), Object(Laminas\Diactoros\ServerRequest))
#7 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Middleware/RequestHandlerMiddleware.php(54): Mezzio\Handler\NotFoundHandler->handle(Object(Laminas\Diactoros\ServerRequest))
#8 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Middleware/LazyLoadingMiddleware.php(47): Laminas\Stratigility\Middleware\RequestHandlerMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#9 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Mezzio\Middleware\LazyLoadingMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#10 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio-router/src/RouteResult.php(108): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#11 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio-router/src/Middleware/DispatchMiddleware.php(36): Mezzio\Router\RouteResult->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#12 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Middleware/LazyLoadingMiddleware.php(47): Mezzio\Router\Middleware\DispatchMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#13 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Mezzio\Middleware\LazyLoadingMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#14 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio-helpers/src/UrlHelperMiddleware.php(46): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#15 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Middleware/LazyLoadingMiddleware.php(47): Mezzio\Helper\UrlHelperMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#16 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Mezzio\Middleware\LazyLoadingMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#17 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio-router/src/Middleware/MethodNotAllowedMiddleware.php(52): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#18 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Middleware/LazyLoadingMiddleware.php(47): Mezzio\Router\Middleware\MethodNotAllowedMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#19 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Mezzio\Middleware\LazyLoadingMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#20 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio-router/src/Middleware/ImplicitOptionsMiddleware.php(71): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#21 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Middleware/LazyLoadingMiddleware.php(47): Mezzio\Router\Middleware\ImplicitOptionsMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#22 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Mezzio\Middleware\LazyLoadingMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#23 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio-router/src/Middleware/ImplicitHeadMiddleware.php(85): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#24 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Middleware/LazyLoadingMiddleware.php(47): Mezzio\Router\Middleware\ImplicitHeadMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#25 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Mezzio\Middleware\LazyLoadingMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#26 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio-router/src/Middleware/RouteMiddleware.php(55): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#27 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Middleware/LazyLoadingMiddleware.php(47): Mezzio\Router\Middleware\RouteMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#28 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Mezzio\Middleware\LazyLoadingMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#29 /Users/codeconqueror/Sites/dotkernel-api/vendor/tuupola/cors-middleware/src/CorsMiddleware.php(112): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#30 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Middleware/LazyLoadingMiddleware.php(47): Tuupola\Middleware\CorsMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#31 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Mezzio\Middleware\LazyLoadingMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#32 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio-helpers/src/ServerUrlMiddleware.php(38): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#33 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Middleware/LazyLoadingMiddleware.php(47): Mezzio\Helper\ServerUrlMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#34 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Mezzio\Middleware\LazyLoadingMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#35 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio-helpers/src/BodyParams/BodyParamsMiddleware.php(75): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#36 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Middleware/LazyLoadingMiddleware.php(47): Mezzio\Helper\BodyParams\BodyParamsMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#37 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Mezzio\Middleware\LazyLoadingMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#38 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Middleware/PathMiddlewareDecorator.php(48): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#39 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Laminas\Stratigility\Middleware\PathMiddlewareDecorator->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#40 /Users/codeconqueror/Sites/dotkernel-api/vendor/dotkernel/dot-errorhandler/src/LogErrorHandler.php(146): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#41 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Middleware/LazyLoadingMiddleware.php(47): Dot\ErrorHandler\LogErrorHandler->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#42 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/Next.php(61): Mezzio\Middleware\LazyLoadingMiddleware->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
#43 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(84): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
#44 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(73): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\EmptyPipelineHandler))
#45 /Users/codeconqueror/Sites/dotkernel-api/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php(96): Laminas\Stratigility\MiddlewarePipe->handle(Object(Laminas\Diactoros\ServerRequest))
#46 /Users/codeconqueror/Sites/dotkernel-api/vendor/mezzio/mezzio/src/Application.php(82): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
#47 /Users/codeconqueror/Sites/dotkernel-api/public/index.php(32): Mezzio\Application->run()
#48 /Users/codeconqueror/Sites/dotkernel-api/public/index.php(33): {closure}()
#49 {main}```

replace DateTime with DateTimeImmutable

since DateTime is a dangerous function
we need to replace it with DateTimeImmutable

because mutable date objects sucks. causing more issues than anything else.

'DotKernel' hardcoded in anonymization

in UserService.php there is this line
173 $user->setEmail('anonymous' . date('dmYHis') . '@dotkernel.com');

do we want our domain hardcoded in the anonymization feature?

documentation restart

  1. fresh instalare
    rulesz consola
    *** daca nu e compelt, return error cu toate unde nu e complet
    file
    line
    method
    citesc * RouteDelegarot.php !!!!!
    generez fisier html
    data sus : generat in 12.03.2019
    citeste Frontendu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.