#48 - deployment
This commit is contained in:
parent
0c32410767
commit
d5ba1de403
@ -30,7 +30,6 @@ DOCKER_TEST_DB_PASSWORD=${DB_PASSWORD}
|
|||||||
DOCKER_TEST_DB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
|
DOCKER_TEST_DB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
|
||||||
|
|
||||||
REDIS_PORT=6379
|
REDIS_PORT=6379
|
||||||
REDIS_CLIENT=predis
|
|
||||||
REDIS_HOST=toby-redis
|
REDIS_HOST=toby-redis
|
||||||
|
|
||||||
XDG_CONFIG_HOME=/tmp
|
XDG_CONFIG_HOME=/tmp
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -15,5 +15,6 @@ Homestead.json
|
|||||||
Homestead.yaml
|
Homestead.yaml
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
|
google-credentials.json
|
||||||
.idea/
|
.idea/
|
||||||
.composer
|
.composer
|
||||||
|
4
Procfile
4
Procfile
@ -1 +1,3 @@
|
|||||||
web: vendor/bin/heroku-php-apache2 public/
|
web: vendor/bin/heroku-php-nginx -C nginx.conf public/
|
||||||
|
release: php artisan migrate --force && php artisan cache:clear && php artisan config:cache
|
||||||
|
worker: php artisan queue:work
|
||||||
|
@ -4,19 +4,19 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Toby\Eloquent\Observers;
|
namespace Toby\Eloquent\Observers;
|
||||||
|
|
||||||
use Toby\Eloquent\Helpers\YearPeriodRetriever;
|
|
||||||
use Toby\Eloquent\Models\User;
|
use Toby\Eloquent\Models\User;
|
||||||
|
use Toby\Eloquent\Models\YearPeriod;
|
||||||
|
|
||||||
class UserObserver
|
class UserObserver
|
||||||
{
|
{
|
||||||
public function __construct(
|
|
||||||
protected YearPeriodRetriever $yearPeriodRetriever,
|
|
||||||
) {}
|
|
||||||
|
|
||||||
public function created(User $user): void
|
public function created(User $user): void
|
||||||
{
|
{
|
||||||
|
$yearPeriods = YearPeriod::all();
|
||||||
|
|
||||||
|
foreach ($yearPeriods as $yearPeriod) {
|
||||||
$user->vacationLimits()->create([
|
$user->vacationLimits()->create([
|
||||||
"year_period_id" => $this->yearPeriodRetriever->current()->id,
|
"year_period_id" => $yearPeriod->id,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@ -9,12 +9,6 @@ use Symfony\Component\HttpFoundation\Request;
|
|||||||
|
|
||||||
class TrustProxies extends Middleware
|
class TrustProxies extends Middleware
|
||||||
{
|
{
|
||||||
protected $proxies;
|
protected $proxies = '*';
|
||||||
|
protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;
|
||||||
protected $headers =
|
|
||||||
Request::HEADER_X_FORWARDED_FOR |
|
|
||||||
Request::HEADER_X_FORWARDED_HOST |
|
|
||||||
Request::HEADER_X_FORWARDED_PORT |
|
|
||||||
Request::HEADER_X_FORWARDED_PROTO |
|
|
||||||
Request::HEADER_X_FORWARDED_AWS_ELB;
|
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
"ext-redis": "*",
|
"ext-redis": "*",
|
||||||
"azuyalabs/yasumi": "^2.4",
|
"azuyalabs/yasumi": "^2.4",
|
||||||
"barryvdh/laravel-dompdf": "^1.0",
|
"barryvdh/laravel-dompdf": "^1.0",
|
||||||
|
"fakerphp/faker": "^1.19",
|
||||||
"fruitcake/laravel-cors": "^2.0",
|
"fruitcake/laravel-cors": "^2.0",
|
||||||
"guzzlehttp/guzzle": "^7.0.1",
|
"guzzlehttp/guzzle": "^7.0.1",
|
||||||
"inertiajs/inertia-laravel": "^0.5.1",
|
"inertiajs/inertia-laravel": "^0.5.1",
|
||||||
@ -27,7 +28,6 @@
|
|||||||
"require-dev": {
|
"require-dev": {
|
||||||
"blumilksoftware/codestyle": "^0.10.0",
|
"blumilksoftware/codestyle": "^0.10.0",
|
||||||
"spatie/laravel-ignition": "^1.0",
|
"spatie/laravel-ignition": "^1.0",
|
||||||
"fakerphp/faker": "^1.9.1",
|
|
||||||
"laravel/dusk": "^6.21",
|
"laravel/dusk": "^6.21",
|
||||||
"mockery/mockery": "^1.4.4",
|
"mockery/mockery": "^1.4.4",
|
||||||
"nunomaduro/collision": "^6.1",
|
"nunomaduro/collision": "^6.1",
|
||||||
|
136
composer.lock
generated
136
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "c5b402774b90f0e4bb912ca08a44a143",
|
"content-hash": "0ee65ae15107942cb5ad2ee8067d514c",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "asm89/stack-cors",
|
"name": "asm89/stack-cors",
|
||||||
@ -813,6 +813,73 @@
|
|||||||
},
|
},
|
||||||
"time": "2020-10-16T08:27:54+00:00"
|
"time": "2020-10-16T08:27:54+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "fakerphp/faker",
|
||||||
|
"version": "v1.19.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/FakerPHP/Faker.git",
|
||||||
|
"reference": "d7f08a622b3346766325488aa32ddc93ccdecc75"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75",
|
||||||
|
"reference": "d7f08a622b3346766325488aa32ddc93ccdecc75",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.1 || ^8.0",
|
||||||
|
"psr/container": "^1.0 || ^2.0",
|
||||||
|
"symfony/deprecation-contracts": "^2.2 || ^3.0"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"fzaninotto/faker": "*"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"bamarni/composer-bin-plugin": "^1.4.1",
|
||||||
|
"doctrine/persistence": "^1.3 || ^2.0",
|
||||||
|
"ext-intl": "*",
|
||||||
|
"symfony/phpunit-bridge": "^4.4 || ^5.2"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"doctrine/orm": "Required to use Faker\\ORM\\Doctrine",
|
||||||
|
"ext-curl": "Required by Faker\\Provider\\Image to download images.",
|
||||||
|
"ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.",
|
||||||
|
"ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.",
|
||||||
|
"ext-mbstring": "Required for multibyte Unicode string functionality."
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "v1.19-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Faker\\": "src/Faker/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "François Zaninotto"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Faker is a PHP library that generates fake data for you.",
|
||||||
|
"keywords": [
|
||||||
|
"data",
|
||||||
|
"faker",
|
||||||
|
"fixtures"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/FakerPHP/Faker/issues",
|
||||||
|
"source": "https://github.com/FakerPHP/Faker/tree/v1.19.0"
|
||||||
|
},
|
||||||
|
"time": "2022-02-02T17:38:57+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "firebase/php-jwt",
|
"name": "firebase/php-jwt",
|
||||||
"version": "v5.5.1",
|
"version": "v5.5.1",
|
||||||
@ -8004,73 +8071,6 @@
|
|||||||
],
|
],
|
||||||
"time": "2022-03-03T08:28:38+00:00"
|
"time": "2022-03-03T08:28:38+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "fakerphp/faker",
|
|
||||||
"version": "v1.19.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/FakerPHP/Faker.git",
|
|
||||||
"reference": "d7f08a622b3346766325488aa32ddc93ccdecc75"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75",
|
|
||||||
"reference": "d7f08a622b3346766325488aa32ddc93ccdecc75",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^7.1 || ^8.0",
|
|
||||||
"psr/container": "^1.0 || ^2.0",
|
|
||||||
"symfony/deprecation-contracts": "^2.2 || ^3.0"
|
|
||||||
},
|
|
||||||
"conflict": {
|
|
||||||
"fzaninotto/faker": "*"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"bamarni/composer-bin-plugin": "^1.4.1",
|
|
||||||
"doctrine/persistence": "^1.3 || ^2.0",
|
|
||||||
"ext-intl": "*",
|
|
||||||
"symfony/phpunit-bridge": "^4.4 || ^5.2"
|
|
||||||
},
|
|
||||||
"suggest": {
|
|
||||||
"doctrine/orm": "Required to use Faker\\ORM\\Doctrine",
|
|
||||||
"ext-curl": "Required by Faker\\Provider\\Image to download images.",
|
|
||||||
"ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.",
|
|
||||||
"ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.",
|
|
||||||
"ext-mbstring": "Required for multibyte Unicode string functionality."
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-main": "v1.19-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Faker\\": "src/Faker/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "François Zaninotto"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Faker is a PHP library that generates fake data for you.",
|
|
||||||
"keywords": [
|
|
||||||
"data",
|
|
||||||
"faker",
|
|
||||||
"fixtures"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/FakerPHP/Faker/issues",
|
|
||||||
"source": "https://github.com/FakerPHP/Faker/tree/v1.19.0"
|
|
||||||
},
|
|
||||||
"time": "2022-02-02T17:38:57+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "filp/whoops",
|
"name": "filp/whoops",
|
||||||
"version": "2.14.5",
|
"version": "2.14.5",
|
||||||
|
@ -30,7 +30,6 @@ return [
|
|||||||
"prefix" => env("REDIS_PREFIX", Str::slug(env("APP_NAME", "laravel"), "_") . "_database_"),
|
"prefix" => env("REDIS_PREFIX", Str::slug(env("APP_NAME", "laravel"), "_") . "_database_"),
|
||||||
],
|
],
|
||||||
"default" => [
|
"default" => [
|
||||||
"scheme" => "tls",
|
|
||||||
"url" => env("REDIS_URL"),
|
"url" => env("REDIS_URL"),
|
||||||
"host" => env("REDIS_HOST", "127.0.0.1"),
|
"host" => env("REDIS_HOST", "127.0.0.1"),
|
||||||
"password" => env("REDIS_PASSWORD"),
|
"password" => env("REDIS_PASSWORD"),
|
||||||
@ -38,7 +37,6 @@ return [
|
|||||||
"database" => env("REDIS_DB", "0"),
|
"database" => env("REDIS_DB", "0"),
|
||||||
],
|
],
|
||||||
"cache" => [
|
"cache" => [
|
||||||
"scheme" => "tls",
|
|
||||||
"url" => env("REDIS_URL"),
|
"url" => env("REDIS_URL"),
|
||||||
"host" => env("REDIS_HOST", "127.0.0.1"),
|
"host" => env("REDIS_HOST", "127.0.0.1"),
|
||||||
"password" => env("REDIS_PASSWORD"),
|
"password" => env("REDIS_PASSWORD"),
|
||||||
|
@ -6,14 +6,9 @@ return [
|
|||||||
"default_auth_profile" => env("GOOGLE_CALENDAR_AUTH_PROFILE", "service_account"),
|
"default_auth_profile" => env("GOOGLE_CALENDAR_AUTH_PROFILE", "service_account"),
|
||||||
"auth_profiles" => [
|
"auth_profiles" => [
|
||||||
"service_account" => [
|
"service_account" => [
|
||||||
"credentials_json" => storage_path("app/google-calendar/service-account-credentials.json"),
|
"credentials_json" => base_path("google-credentials.json"),
|
||||||
],
|
|
||||||
"oauth" => [
|
|
||||||
"credentials_json" => storage_path("app/google-calendar/oauth-credentials.json"),
|
|
||||||
"token_json" => storage_path("app/google-calendar/oauth-token.json"),
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
"calendar_id" => env("GOOGLE_CALENDAR_ID"),
|
"calendar_id" => env("GOOGLE_CALENDAR_ID"),
|
||||||
"user_to_impersonate" => env("GOOGLE_CALENDAR_IMPERSONATE"),
|
"user_to_impersonate" => env("GOOGLE_CALENDAR_IMPERSONATE"),
|
||||||
];
|
];
|
||||||
|
@ -9,14 +9,15 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
|||||||
&& docker-php-ext-enable xdebug \
|
&& docker-php-ext-enable xdebug \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache pcre-dev $PHPIZE_DEPS \
|
||||||
postgresql-dev \
|
postgresql-dev \
|
||||||
zip \
|
zip \
|
||||||
libzip-dev \
|
libzip-dev \
|
||||||
libpng-dev \
|
&& pecl install redis \
|
||||||
&& docker-php-ext-install \
|
&& docker-php-ext-install \
|
||||||
pdo_pgsql \
|
pdo_pgsql \
|
||||||
zip \
|
zip \
|
||||||
gd \
|
|
||||||
&& docker-php-ext-configure \
|
&& docker-php-ext-configure \
|
||||||
zip
|
zip \
|
||||||
|
&& docker-php-ext-enable \
|
||||||
|
redis
|
||||||
|
10
nginx.conf
Normal file
10
nginx.conf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
if ($http_x_forwarded_proto != 'https') {
|
||||||
|
rewrite ^ https://$host$request_uri? permanent;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri @rewriteapp;
|
||||||
|
}
|
||||||
|
location @rewriteapp {
|
||||||
|
rewrite ^(.*)$ /index.php$1 last;
|
||||||
|
}
|
@ -53,7 +53,7 @@ Directory structure little differs from a standard Laravel tree. We decided to r
|
|||||||
|
|
||||||
dcr node npm run dev
|
dcr node npm run dev
|
||||||
|
|
||||||
- place google credentials here: `/storage/app/google-calendar/service-account-credentials.json` ([how to obtain the credentials](https://github.com/spatie/laravel-google-calendar#how-to-obtain-the-credentials-to-communicate-with-google-calendar))
|
- place google credentials here: `/google-credentials.json` ([how to obtain the credentials](https://github.com/spatie/laravel-google-calendar#how-to-obtain-the-credentials-to-communicate-with-google-calendar))
|
||||||
|
|
||||||
### Available containers (local)
|
### Available containers (local)
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ const statuses = [
|
|||||||
|
|
||||||
export function useStatusInfo() {
|
export function useStatusInfo() {
|
||||||
const getStatues = () => statuses
|
const getStatues = () => statuses
|
||||||
const findStatus = value => statuses.find(month => month.value === value)
|
const findStatus = value => statuses.find(status => status.value === value)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
getStatues,
|
getStatues,
|
||||||
|
@ -372,7 +372,7 @@ export default {
|
|||||||
setup(props) {
|
setup(props) {
|
||||||
const form = useForm({
|
const form = useForm({
|
||||||
user: props.can.createOnBehalfOfEmployee
|
user: props.can.createOnBehalfOfEmployee
|
||||||
? props.users.data.find(user => user.id === props.auth.user.id)
|
? props.users.data.find(user => user.id === props.auth.user.id) ?? props.users.data[0]
|
||||||
: props.auth.user,
|
: props.auth.user,
|
||||||
from: null,
|
from: null,
|
||||||
to: null,
|
to: null,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user