Skip to content

Instantly share code, notes, and snippets.

View paulofreitas's full-sized avatar

Paulo Freitas paulofreitas

View GitHub Profile
@paulofreitas
paulofreitas / custom-paginator.md
Last active March 2, 2020 10:09
Custom Google-like length-aware paginator for Laravel 5.4+
  • Save the helpers.php file in your app directory
  • Edit your composer.json manifest file to auloload this file:
    "autoload": {
        "files": [
            "app/helpers.php"
        ],
    // ...
<?php
namespace App\Http\Middleware;
use Closure;
class SetLocale
{
/**
* Handle an incoming request.
<?php
use App\User;
Route::group(['prefix' => 'user'], function () {
Route::fallback(function () {
return response()->view('custom-error', [
'message' => 'Usuário deve conter apenas caracteres numéricos.',
])
->setStatusCode(404);
@paulofreitas
paulofreitas / security-http-headers.md
Last active June 11, 2021 16:22
Cabeçalhos de resposta HTTP relacionados a segurança

Content-Security-Policy, X-Content-Security-Policy, X-WebKit-CSP

O cabeçalho de resposta HTTP Content-Security-Policy permite aos administradores de sites controlar os recursos que o navegador ou agente de usuário (user agent) pode carregar em uma determinada página. Com algumas exceções, as políticas envolvem principalmente especificar as origens do servidor e os endpoints de script. Isso ajuda a proteger contra ataques de XSS.

O cabeçalho de respsota HTTP X-Content-Security-Policy é requerido para implementar o CSP no Internet Explorer 10 e 11.

O cabeçalho de resposta HTTTP X-Webkit-CSP é requerido para implementar o CSP em versões mais antigas do Google Chrome, Safari e outros navegadores baseados na engine WebKit.

Para navegadores modernos, o cabeçalho Content-Security-Policy deve ser usado.

@paulofreitas
paulofreitas / Changes.md
Last active September 23, 2017 20:53
Laravel 5.5-dev vs Laravel 5.5

Laravel 5.5-dev vs Laravel 5.5

  • laravel55-dev: clonado em 27 de agosto 20:34:59
  • laravel55-stable: clonado em 30 de agosto 15:55:17

Antes de executar o git diff foi executado o composer update em ambos diretórios.

Resultado do git diff:

@paulofreitas
paulofreitas / vhost.conf
Last active August 8, 2017 18:48
Serving different API versions through content negotiation with Nginx
map $http_accept $api_version {
default 1;
"~application/vnd\.namespace\.v1(\+json)?" 1;
"~application/vnd\.namespace\.v2(\+json)?" 2;
"~application/vnd\.namespace\.v3(\+json)?" 3;
}
server {
listen 80;
server_name api.domain.com;
@paulofreitas
paulofreitas / vhost.conf
Created August 8, 2017 18:16
Serving different API versions through custom Api-Version header with Nginx
server {
listen 80;
server_name api.domain.com;
# Set default API version
if ($http_api_version = '') {
set $http_api_version 1;
}
# Forbid unsupported API versions
@paulofreitas
paulofreitas / Apache Tricks.md
Last active July 21, 2017 18:00
Redirects Apache www URLs to non-www

Using mod_alias

HTTP only

<VirtualHost *:80>
    ServerName www.example.com
    Redirect permanent / http://example.com/
</VirtualHost>
<?php
namespace App;
use DB;
trait ExtendedModel
{
public static function getColumnInfo($column)
{
@paulofreitas
paulofreitas / HasCompositeKey.php
Last active June 24, 2017 00:19
Trait to enable the use of composite keys with Eloquent
<?php
namespace App\Entities;
use UnexpectedValueException;
use Illuminate\Database\Eloquent\Builder;
trait HasCompositeKey
{
/**