caxy/symfony-starter-kit


README

Decoupled-backend Starter Kit to use with Angular front-end decoupled project

###Getting Started

###1. Clone Repo

git clone --bare git@github.com:caxy/symfony-starter-kit.git
cd symfony-starter-kit
git push --mirror {NEW_GITHUB_REPO_LINK}
cd ../
rm -rf symfony-starter-kit

git clone {NEW_GITHUB_REPO_LINK}
cd {NEW_REPO_NAME}

###2. Install Packages & fill-out parameters

composer install
bash dev-setup.sh

###3. Setup Database & Load Fixtures

bin/console d:d:c
bin/console d:s:c
bin/console d:f:l -n

###4. Fix your permissions (advanced)

See Setting up Permissions in the Symfony book.

macOS

HTTPDUSER=`ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`
sudo chmod -R +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" var
sudo chmod -R +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" var

Linux/BSD

HTTPDUSER=`ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`
#if this doesn't work, try adding `-n` option
sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX var
sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX var

###5. JWT Setup

mkdir -p var/jwt # For Symfony3+, no need of the -p option
openssl genrsa -out var/jwt/private.pem -aes256 4096
openssl rsa -pubout -in var/jwt/private.pem -out var/jwt/public.pem

###6. Important note for Apache Users

Apache server will strip any Authorization header not in a valid HTTP BASIC AUTH format.

If you intend to use the authorization header mode of this bundle (and you should), please add those rules to your VirtualHost configuration :

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

###7. Confirm

Run the Symfony built in web server with highest verbosity.

bin/console server:run -vvv

Then run a command that should return an authentication error:

curl http://localhost:8000/api/users/1

The response should be:

{"code":401,"message":"Invalid credentials"}

If PHP is misconfigured, it may report errors that include directions for changing the php.ini file during any of the above steps.

###8. Testing the API

To Test the built in tests run:

phpunit

First Generate a JWT Token, from Terminal:

#username can be any user in the database, user, admin, superadmin are available from the fixutres.
bin/console generate:token {username}

The output will give you a long string, copy that and paste it into the url where it says {INSERT TOKEN HERE}

To Test the API, browse to localhost:8000/api/doc?bearer={INSERT TOKEN HERE} Do not confuse this with localhost:8000/api, they are separate, and will not function without the JWT Token.

Once on localhost:8000/api/doc?bearer={INSERT TOKEN HERE}, You need to set the token again in the input in the upper right where it says 'api key:' and press save. Then you can start using endpoints.