πŸ“› An open source status page system for everyone.

Overview

StyleCI License Localisation Latest Stable Version

Cachet is a beautiful and powerful open source status page system.

Overview

  • List your service components
  • Report incidents
  • Customise the look of your status page
  • Markdown support for incident messages
  • A powerful JSON API
  • Metrics
  • Multi-lingual
  • Subscriber notifications via email
  • Two factor authentication

Community

You can now join our Slack community!

Requirements

  • PHP 7.1.3 – 7.3
  • HTTP server with PHP support (e.g.: Apache, Nginx, Caddy)
  • Composer
  • A supported database: MySQL, PostgreSQL or SQLite

Installation, Upgrades and Documentation

You can find documentation at https://docs.cachethq.io.

Here are some useful quick links:

Demo

To test out the demo, you can log in to the Dashboard with the following credentials:

The demo resets every 30 minutes.

Translate Cachet

If you'd like to contribute translations, please check out our Crowdin project.

Security Vulnerabilities

If you discover a security vulnerability within Cachet, please send an e-mail to [email protected]. All security vulnerabilities are reviewed on a case-by-case basis.

Limited Support Contact

We may be able to resolve support queries via email. Please send an email to [email protected]. Please check the GitHub issue tracker first before emailing.

Professional Installation Service

A professional installation service is offered by Alt Three Services Limited. To find out more, contact [email protected]. Do not contact this email address for general support.

Sponsorship

You can sponsor Cachet at our Patreon page.

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

Comments
  • Style bug in date picker

    Style bug in date picker

    Hi,

    When i create an incident (or scheduled maintenance) and i click the date picker this is what happens : screen shot 2015-05-27 at 14 32 35

    I think it's a styling bug or something? I'm using OSX and the latest Chrome!

    Bug Help Wanted Design 
    opened by dennusb 66
  • Service Layer?

    Service Layer?

    I service layer would be good to introduce now while the codebase is still small. I'm not saying we change to all out ddd, but a small service layer would definitely be a good idea.

    Refactor 
    opened by GrahamCampbell 56
  • CSRF token validation failed

    CSRF token validation failed

    I am totally sure it has to do something with my environment but I could need a little help. I alway had Cachet good working on Redhat OpenShift, as they are moving to a new platform I decided to move away to my own FreeBSD server.

    As for my enviroment I have downloaded the source with Git and followed the whole documentation https://docs.cachethq.io/docs/installing-cachet. I use FreeBSD 10, PHP56, NGINX, composer and PDO MySQL extension.

    As for this issue I already cleared cache, did a new app:install, config:cache, got my app:key nicely filled in my .env-file, correctly set permissions for my WWW-user:777 (temp) and such sort of things.

    I have no caching apps tho. Any idea what this could be? When I browse to https://status.domain.com/setup I see the config page and as soon as I fill in my stuff I get: "CSRF TOKEN VALIDATION FAILED".

    `APP_ENV=production APP_DEBUG=true APP_URL=http://status.xxxxxxxxx.nl APP_KEY=base64:dtZmW2niOo/JUD+1lJDJPbZz/ywuAKUFN7xxxxxxxxx

    DB_DRIVER=mysql DB_HOST=localhost DB_UNIX_SOCKET=null DB_DATABASE=xxxxxxxxx DB_USERNAME=xxxxxxxxx DB_PASSWORD=xxxxxxxxx DB_PORT=null DB_PREFIX=null

    CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync

    CACHET_BEACON=true CACHET_EMOJI=false CACHET_AUTO_TWITTER=true `

    opened by xxxdebug 55
  • Setup no longer works

    Setup no longer works

    I've just re-setup the Heroku demo, it took me to the login page but upon checking the database there is no user.

    Looking through it all, even the settings haven't been filled in.

    Bug 
    opened by jbrooksuk 54
  • 500 Internal server error on fresh install

    500 Internal server error on fresh install

    Before submitting your issue, please make sure that you've checked the checkboxes below.

    • [x] I am running the latest release version of Cachet.
    • [x] I am running at least PHP 5.5.9. You can check this by running php -v.
    • [x] I have ran rm -rf bootstrap/cache/*.

    Expected behaviour

    The setup page to show up.

    Actual behaviour

    Gives a 500 Internal Server Error

    Steps to reproduce

    1. Refresh the page.
    opened by fcpwiz 52
  • 500 Error When Trying to Edit Component and Viewing Theme, Stylesheet,Localisation and 'Create an Incident Template' Pages

    500 Error When Trying to Edit Component and Viewing Theme, Stylesheet,Localisation and 'Create an Incident Template' Pages

    I have verified this isn't a Ubuntu permissions problem because my whole Cachet folder has 777 permissions.

    [2016-02-01 17:34:04] local.ERROR: exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'component_id' in 'where clause'' in /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php:319
    Stack trace:
    #0 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php(319): PDO->prepare('select `subscri...')
    #1 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php(644): Illuminate\Database\Connection->Illuminate\Database\{closure}(Object(Illuminate\Database\MySqlConnection), 'select `subscri...', Array)
    #2 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php(611): Illuminate\Database\Connection->runQueryCallback('select `subscri...', Array, Object(Closure))
    #3 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php(324): Illuminate\Database\Connection->run('select `subscri...', Array, Object(Closure))
    #4 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(1461): Illuminate\Database\Connection->select('select `subscri...', Array, true)
    #5 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(1447): Illuminate\Database\Query\Builder->runSelect()
    #6 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(503): Illuminate\Database\Query\Builder->get(Array)
    #7 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(237): Illuminate\Database\Eloquent\Builder->getModels(Array)
    #8 /var/www/html/Cachet/app/Bus/Handlers/Events/Component/SendComponentUpdateEmailNotificationHandler.php(59): Illuminate\Database\Eloquent\Builder->get()
    #9 [internal function]: CachetHQ\Cachet\Bus\Handlers\Events\Component\SendComponentUpdateEmailNotificationHandler->handle(Object(CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent))
    #10 /var/www/html/Cachet/bootstrap/cache/compiled.php(9831): call_user_func_array(Array, Array)
    #11 [internal function]: Illuminate\Events\Dispatcher->Illuminate\Events\{closure}(Object(CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent))
    #12 /var/www/html/Cachet/bootstrap/cache/compiled.php(9776): call_user_func_array(Object(Closure), Array)
    #13 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(376): Illuminate\Events\Dispatcher->fire(Object(CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent), Array, false)
    #14 /var/www/html/Cachet/app/Bus/Handlers/Commands/Component/UpdateComponentCommandHandler.php(33): event(Object(CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent))
    #15 [internal function]: CachetHQ\Cachet\Bus\Handlers\Commands\Component\UpdateComponentCommandHandler->handle(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #16 /var/www/html/Cachet/vendor/alt-three/bus/src/Dispatcher.php(225): call_user_func(Array, Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #17 [internal function]: AltThree\Bus\Dispatcher->AltThree\Bus\{closure}(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #18 /var/www/html/Cachet/bootstrap/cache/compiled.php(9612): call_user_func(Object(Closure), Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #19 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #20 /var/www/html/Cachet/bootstrap/cache/compiled.php(9594): call_user_func(Object(Closure), Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #21 /var/www/html/Cachet/vendor/alt-three/bus/src/Dispatcher.php(226): Illuminate\Pipeline\Pipeline->then(Object(Closure))
    #22 /var/www/html/Cachet/vendor/alt-three/bus/src/Dispatcher.php(201): AltThree\Bus\Dispatcher->dispatchNow(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand), NULL)
    #23 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(281): AltThree\Bus\Dispatcher->dispatch(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #24 /var/www/html/Cachet/app/Http/Controllers/Dashboard/ComponentController.php(139): dispatch(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #25 [internal function]: CachetHQ\Cachet\Http\Controllers\Dashboard\ComponentController->updateComponentAction(Object(CachetHQ\Cachet\Models\Component))
    #26 /var/www/html/Cachet/bootstrap/cache/compiled.php(9075): call_user_func_array(Array, Array)
    #27 /var/www/html/Cachet/bootstrap/cache/compiled.php(9137): Illuminate\Routing\Controller->callAction('updateComponent...', Array)
    #28 /var/www/html/Cachet/bootstrap/cache/compiled.php(9117): Illuminate\Routing\ControllerDispatcher->call(Object(CachetHQ\Cachet\Http\Controllers\Dashboard\ComponentController), Object(Illuminate\Routing\Route), 'updateComponent...')
    #29 [internal function]: Illuminate\Routing\ControllerDispatcher->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #30 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #31 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #32 /var/www/html/Cachet/bootstrap/cache/compiled.php(9594): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #33 /var/www/html/Cachet/bootstrap/cache/compiled.php(9118): Illuminate\Pipeline\Pipeline->then(Object(Closure))
    #34 /var/www/html/Cachet/bootstrap/cache/compiled.php(9105): Illuminate\Routing\ControllerDispatcher->callWithinStack(Object(CachetHQ\Cachet\Http\Controllers\Dashboard\ComponentController), Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'updateComponent...')
    #35 /var/www/html/Cachet/bootstrap/cache/compiled.php(8209): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'CachetHQ\\Cachet...', 'updateComponent...')
    #36 /var/www/html/Cachet/bootstrap/cache/compiled.php(8196): Illuminate\Routing\Route->runController(Object(Illuminate\Http\Request))
    #37 /var/www/html/Cachet/bootstrap/cache/compiled.php(7924): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request))
    #38 [internal function]: Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #39 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #40 /var/www/html/Cachet/app/Http/Middleware/Authenticate.php(53): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #41 [internal function]: CachetHQ\Cachet\Http\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))
    #42 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #43 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #44 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #45 /var/www/html/Cachet/bootstrap/cache/compiled.php(3093): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #46 [internal function]: Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
    #47 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #48 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #49 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #50 /var/www/html/Cachet/bootstrap/cache/compiled.php(13049): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #51 [internal function]: Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
    #52 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #53 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #54 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #55 /var/www/html/Cachet/bootstrap/cache/compiled.php(11613): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #56 [internal function]: Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
    #57 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #58 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #59 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #60 /var/www/html/Cachet/bootstrap/cache/compiled.php(12788): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #61 [internal function]: Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
    #62 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #63 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #64 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #65 /var/www/html/Cachet/bootstrap/cache/compiled.php(12725): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #66 [internal function]: Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
    #67 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #68 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #69 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #70 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #71 /var/www/html/Cachet/bootstrap/cache/compiled.php(9594): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #72 /var/www/html/Cachet/bootstrap/cache/compiled.php(7925): Illuminate\Pipeline\Pipeline->then(Object(Closure))
    #73 /var/www/html/Cachet/bootstrap/cache/compiled.php(7916): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
    #74 /var/www/html/Cachet/bootstrap/cache/compiled.php(7906): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
    #75 /var/www/html/Cachet/bootstrap/cache/compiled.php(2357): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
    #76 [internal function]: Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
    #77 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #78 /var/www/html/Cachet/bootstrap/cache/compiled.php(3154): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #79 [internal function]: Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
    #80 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #81 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #82 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #83 /var/www/html/Cachet/vendor/fideloper/proxy/src/TrustProxies.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #84 [internal function]: Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
    #85 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #86 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #87 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #88 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #89 /var/www/html/Cachet/bootstrap/cache/compiled.php(9594): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #90 /var/www/html/Cachet/bootstrap/cache/compiled.php(2304): Illuminate\Pipeline\Pipeline->then(Object(Closure))
    #91 /var/www/html/Cachet/bootstrap/cache/compiled.php(2288): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
    #92 /var/www/html/Cachet/public/index.php(54): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
    #93 {main}
    Next exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'component_id' in 'where clause' (SQL: select `subscriptions`.* from `subscriptions` inner join `subscribers` on `subscriptions`.`subscriber_id` = `subscribers`.`id` where `component_id` = 12 and `subscribers`.`verified_at` is not null)' in /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php:651
    Stack trace:
    #0 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php(611): Illuminate\Database\Connection->runQueryCallback('select `subscri...', Array, Object(Closure))
    #1 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php(324): Illuminate\Database\Connection->run('select `subscri...', Array, Object(Closure))
    #2 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(1461): Illuminate\Database\Connection->select('select `subscri...', Array, true)
    #3 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(1447): Illuminate\Database\Query\Builder->runSelect()
    #4 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(503): Illuminate\Database\Query\Builder->get(Array)
    #5 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(237): Illuminate\Database\Eloquent\Builder->getModels(Array)
    #6 /var/www/html/Cachet/app/Bus/Handlers/Events/Component/SendComponentUpdateEmailNotificationHandler.php(59): Illuminate\Database\Eloquent\Builder->get()
    #7 [internal function]: CachetHQ\Cachet\Bus\Handlers\Events\Component\SendComponentUpdateEmailNotificationHandler->handle(Object(CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent))
    #8 /var/www/html/Cachet/bootstrap/cache/compiled.php(9831): call_user_func_array(Array, Array)
    #9 [internal function]: Illuminate\Events\Dispatcher->Illuminate\Events\{closure}(Object(CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent))
    #10 /var/www/html/Cachet/bootstrap/cache/compiled.php(9776): call_user_func_array(Object(Closure), Array)
    #11 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(376): Illuminate\Events\Dispatcher->fire(Object(CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent), Array, false)
    #12 /var/www/html/Cachet/app/Bus/Handlers/Commands/Component/UpdateComponentCommandHandler.php(33): event(Object(CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent))
    #13 [internal function]: CachetHQ\Cachet\Bus\Handlers\Commands\Component\UpdateComponentCommandHandler->handle(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #14 /var/www/html/Cachet/vendor/alt-three/bus/src/Dispatcher.php(225): call_user_func(Array, Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #15 [internal function]: AltThree\Bus\Dispatcher->AltThree\Bus\{closure}(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #16 /var/www/html/Cachet/bootstrap/cache/compiled.php(9612): call_user_func(Object(Closure), Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #17 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #18 /var/www/html/Cachet/bootstrap/cache/compiled.php(9594): call_user_func(Object(Closure), Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #19 /var/www/html/Cachet/vendor/alt-three/bus/src/Dispatcher.php(226): Illuminate\Pipeline\Pipeline->then(Object(Closure))
    #20 /var/www/html/Cachet/vendor/alt-three/bus/src/Dispatcher.php(201): AltThree\Bus\Dispatcher->dispatchNow(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand), NULL)
    #21 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(281): AltThree\Bus\Dispatcher->dispatch(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #22 /var/www/html/Cachet/app/Http/Controllers/Dashboard/ComponentController.php(139): dispatch(Object(CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand))
    #23 [internal function]: CachetHQ\Cachet\Http\Controllers\Dashboard\ComponentController->updateComponentAction(Object(CachetHQ\Cachet\Models\Component))
    #24 /var/www/html/Cachet/bootstrap/cache/compiled.php(9075): call_user_func_array(Array, Array)
    #25 /var/www/html/Cachet/bootstrap/cache/compiled.php(9137): Illuminate\Routing\Controller->callAction('updateComponent...', Array)
    #26 /var/www/html/Cachet/bootstrap/cache/compiled.php(9117): Illuminate\Routing\ControllerDispatcher->call(Object(CachetHQ\Cachet\Http\Controllers\Dashboard\ComponentController), Object(Illuminate\Routing\Route), 'updateComponent...')
    #27 [internal function]: Illuminate\Routing\ControllerDispatcher->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #28 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #29 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #30 /var/www/html/Cachet/bootstrap/cache/compiled.php(9594): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #31 /var/www/html/Cachet/bootstrap/cache/compiled.php(9118): Illuminate\Pipeline\Pipeline->then(Object(Closure))
    #32 /var/www/html/Cachet/bootstrap/cache/compiled.php(9105): Illuminate\Routing\ControllerDispatcher->callWithinStack(Object(CachetHQ\Cachet\Http\Controllers\Dashboard\ComponentController), Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'updateComponent...')
    #33 /var/www/html/Cachet/bootstrap/cache/compiled.php(8209): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'CachetHQ\\Cachet...', 'updateComponent...')
    #34 /var/www/html/Cachet/bootstrap/cache/compiled.php(8196): Illuminate\Routing\Route->runController(Object(Illuminate\Http\Request))
    #35 /var/www/html/Cachet/bootstrap/cache/compiled.php(7924): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request))
    #36 [internal function]: Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #37 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #38 /var/www/html/Cachet/app/Http/Middleware/Authenticate.php(53): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #39 [internal function]: CachetHQ\Cachet\Http\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))
    #40 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #41 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #42 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #43 /var/www/html/Cachet/bootstrap/cache/compiled.php(3093): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #44 [internal function]: Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
    #45 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #46 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #47 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #48 /var/www/html/Cachet/bootstrap/cache/compiled.php(13049): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #49 [internal function]: Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
    #50 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #51 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #52 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #53 /var/www/html/Cachet/bootstrap/cache/compiled.php(11613): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #54 [internal function]: Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
    #55 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #56 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #57 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #58 /var/www/html/Cachet/bootstrap/cache/compiled.php(12788): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #59 [internal function]: Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
    #60 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #61 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #62 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #63 /var/www/html/Cachet/bootstrap/cache/compiled.php(12725): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #64 [internal function]: Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
    #65 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #66 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #67 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #68 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #69 /var/www/html/Cachet/bootstrap/cache/compiled.php(9594): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #70 /var/www/html/Cachet/bootstrap/cache/compiled.php(7925): Illuminate\Pipeline\Pipeline->then(Object(Closure))
    #71 /var/www/html/Cachet/bootstrap/cache/compiled.php(7916): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
    #72 /var/www/html/Cachet/bootstrap/cache/compiled.php(7906): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
    #73 /var/www/html/Cachet/bootstrap/cache/compiled.php(2357): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
    #74 [internal function]: Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
    #75 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #76 /var/www/html/Cachet/bootstrap/cache/compiled.php(3154): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #77 [internal function]: Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
    #78 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #79 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #80 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #81 /var/www/html/Cachet/vendor/fideloper/proxy/src/TrustProxies.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #82 [internal function]: Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
    #83 /var/www/html/Cachet/bootstrap/cache/compiled.php(9604): call_user_func_array(Array, Array)
    #84 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
    #85 /var/www/html/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #86 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
    #87 /var/www/html/Cachet/bootstrap/cache/compiled.php(9594): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
    #88 /var/www/html/Cachet/bootstrap/cache/compiled.php(2304): Illuminate\Pipeline\Pipeline->then(Object(Closure))
    #89 /var/www/html/Cachet/bootstrap/cache/compiled.php(2288): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
    #90 /var/www/html/Cachet/public/index.php(54): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
    #91 {main} {"identification":{"id":"303aadeb-8304-4565-b4b6-1a77a4f85664"}}
    
    Bug 
    opened by TheoBearman 50
  • Time bug

    Time bug

    Hey,

    when ever adding planned maintenace and i set it to 20:00 i hit save/apply so when i check it then i see 21:00 not 20:00 it keeps jumping 1 hour forward to what i save please fix this.

    Bug 
    opened by jakesullyneytiri 49
  • Add visibility to component groups

    Add visibility to component groups

    Hello.

    The work on #1897 and #1892 is pretty much done so it's safe to say this PR is ready for code review.

    The two tickets require that a component group have visibility for the public vs logged in users. Here's what I've done:

    • added two new columns to the component_groups table(check the last two migrations):
      • visible, which specifies whether the component group can be visible to different kinds of users:
        • 0, viewable by public/guests
        • 1, only visible to logged in users,
        • 2, hidden to logged in users but visible to its creator. Default value
      • created_by, which contains the user id of the component group creator
    • updated all related Command and CommandHandler classes and their tests
    • added functional tests for the StatusPageController and the DashboardController classes
    • added a couple of new methods to the AbstractTestCase class that take care of:
      • setting up the project configuration before running the functional tests in order to avoid the setup installation page
      • a sign in helper method that can be used to easily sign in users as needed for future tests

    Also, I'd like to make have some discussions with you,on Slack/other IM if possible, regarding the following:

    • Should I move functional tests into their own directory e.g. tests/functional, integration tests into tests/integration, unit tests into tests/unit?
    • Is it ok with you if I remove the beUser methods from the AbstractApiTestCase and replace its usage with the newly added method, signIn, in the AbstractTestCase class?
    • The StatusPageControllerTest and DashboardControllerTest are a bit similar. I would move these methods in a trait which contains ComponentGroup creation methods?!

    Thanks for reviewing this PR.

    Feature 
    opened by yoyosan 46
  • Demo page never allows you to login from CNAME URL

    Demo page never allows you to login from CNAME URL

    Something is wrong with the demo site (I've just pushed the latest changes). After setup, if you logout and then back in again, it'll simply redirect you back to the login page without an error message.

    https://status.cachethq.io/auth/login

    Bug 
    opened by jbrooksuk 46
  • Unable to Use Pcntl.php on Windows Server 2008 R2

    Unable to Use Pcntl.php on Windows Server 2008 R2

    Good evening,

    I am trying to install Cachet on my Windows Server 2008 R2 box. Unfortunately, one of the PHP dependencies to run Cachet is 'pcntl.php', which is not compatible on Windows. This is to run 'Boris'.

    Is there any way that the program could be changed to be compatible for Windows or there is an alternative .dll I can use that has the same effect? Do I need to run Boris to for Cachet to work or are there maybe some lines in the composer.lock file I can remove?

    Thanks,

    Theo.

    Bug Help Wanted 
    opened by TheoBearman 43
  • 2.4 - rev c74193e - 403 Invalid signture when we click on the url to verify the email

    2.4 - rev c74193e - 403 Invalid signture when we click on the url to verify the email

    Hello,

    With the last release of Cachet (2.4), we have this 403 when we try to verify the email subscription:

    Error 403 Invalid signature. Forbidden What does this mean?

    Something went wrong on our servers while we were processing your request. Invalid signature. This occurrence has been logged, and a highly trained team of monkeys has been dispatched to deal with your problem. We're really sorry about this, and will work hard to get this resolved as soon as possible.

    Moreover, the email is well in "verified" mode in the subscribers tab.

    If I try to rollback to 8f91f6d9 (23 june), works.

    Bug Subscriptions 
    opened by anthosz 42
  • Bump express from 4.16.4 to 4.18.2

    Bump express from 4.16.4 to 4.18.2

    Bumps express from 4.16.4 to 4.18.2.

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Fixed paths for reverse proxies with different subfolder

    Fixed paths for reverse proxies with different subfolder

    When having Cachet running behind a reverse proxy with a different subpath, I noticed the icons were broken.

    For example, the server running the app is hosted at:

    • https://A

    It is hosted by apache, and it has an Alias entry for "status" pointing to the public folder. Therefore, it is also accessible by:

    • https://A/status

    The paths referenced in the CSS go back three levels, which for the dashboard is fine, since the structure is:

    β”œβ”€β”€ dist
    β”‚Β Β  β”œβ”€β”€ css
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ app.8e642081c214028ed55259aac8d62dee.css
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ app.css
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ app.feac6a0c1283b11117bc898e9697488a.css
    β”‚Β Β  β”‚Β Β  └── dashboard
    β”‚Β Β  β”‚Β Β      β”œβ”€β”€ dashboard.23178384bd205669aa1bf4d387ba070d.css
    β”‚Β Β  β”‚Β Β      β”œβ”€β”€ dashboard.css
    β”‚Β Β  β”‚Β Β      └── dashboard.d62a8b6468ab8c9bca396ab8f6cde506.css
    

    so that they are relative to the root. However, the app.css ones also go back three levels, which is one level behind the root, or when running with an alias like I am, it is precisely the root.

    This patch should fix this behavior. Please note that I'm not sure what the purpose of the app.[HASH].css is, since I'm not a web developer

    opened by KiralyCraft 1
  • Bump loader-utils from 1.2.3 to 1.4.2

    Bump loader-utils from 1.2.3 to 1.4.2

    Bumps loader-utils from 1.2.3 to 1.4.2.

    Release notes

    Sourced from loader-utils's releases.

    v1.4.2

    1.4.2 (2022-11-11)

    Bug Fixes

    v1.4.1

    1.4.1 (2022-11-07)

    Bug Fixes

    v1.4.0

    1.4.0 (2020-02-19)

    Features

    • the resourceQuery is passed to the interpolateName method (#163) (cd0e428)

    v1.3.0

    1.3.0 (2020-02-19)

    Features

    • support the [query] template for the interpolatedName method (#162) (469eeba)
    Changelog

    Sourced from loader-utils's changelog.

    1.4.2 (2022-11-11)

    Bug Fixes

    1.4.1 (2022-11-07)

    Bug Fixes

    1.4.0 (2020-02-19)

    Features

    • the resourceQuery is passed to the interpolateName method (#163) (cd0e428)

    1.3.0 (2020-02-19)

    Features

    • support the [query] template for the interpolatedName method (#162) (469eeba)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bug in Incidents Display Logic Identified, Have Proposed Fix

    Bug in Incidents Display Logic Identified, Have Proposed Fix

    Today I created an incident, but it would not display. After changing some settings I discovered that it would only display if I set the time the incident occurred to several hours in the past. Eventually, I discovered that if I set it to 7:00 PM or later, it would not show. 6:59 PM or earlier would make it display. I thought this was curious, as my timezone offset is -0500. After digging through the Cachet code for awhile I discovered the issue.

    I have my Cachet set to "Only show days containing incidents in the timeline" to yes in the settings. If I turn this off then my incident with a time of after 7:00 PM will display. I looked at the logic in app/Http/Controllers/StatusPageController.php and noticed that it is creating an array called $allIncidentDays, and populating it with the dates incidents occurred. However, it is doing a timezone conversion on these dates. Later, some logic changes the $startDate and $endDate variables' values using information from dates derived from $allIncidentDays. When $allIncidents array gets populated later, it is using an incorrect date range, as the date range will not include the most recent incident day if that incident was created after 23:59:59 minus your timezone offset. In my case, this magic time was 7:00 PM since my offset is -0500.

    To fix this issue, I changed a line in $allIncidentDays from this: return app(DateFactory::class)->make($incident->occurred_at)->toDateString(); to this: return $incident->occurred_at->toDateString();

    This removes the timezone conversion loss which causes the date range to be set incorrectly. I could explain further, but I'm sure once a developer looks at this logic they will understand how the timezone conversion would later affect the database query to not include the most recent incident under these specific circumstances.

    This is my first time looking this deeply at the Cachet code. I am also an amateur programmer (my expertise is in networking), so my change could be inadvertently affecting some other logic which would cause problems. There may also be a more elegant way to address this issue.

    Anyway, if any developers would like to test this issue, please enable the setting "Only show days containing incidents in the timeline", set your timezone to a negative offset, subtract that offset from midnight, and create an incident with an occurrence time after that time.

    I see there was someone who also seemed to have my same issue, but there was never anyone who was able to offer them a solution. https://github.com/CachetHQ/Cachet/issues/3998

    To anyone who has the same issue, please try my recommend edit I proposed above.

    Thank you and take care.

    opened by crit100 1
Releases(v2.3.18)
This package tracks if products exist in Magento by storing the status locally in the DB.

Magento Products This package tracks if products exist in Magento by storing the status locally in the DB. We developed this to prevent multiple calls

JustBetter 14 Nov 11, 2022
PHPBack is an open source feedback system

About PHPBack is an open source feedback system you can use for your website. It gives your customers a way to communicate their ideas to improve your

PHPBack 372 Dec 14, 2022
Open source Unifi controller

imperian-systems/unifi-controller Note: This package is backend only, no user interface is included Install snappy PHP extension https://github.com/kj

Imperian Systems 111 Dec 18, 2022
Open Source Invoicing Solution for Individuals & Businesses

Introduction Crater is an open-source web & mobile app that helps you track expenses, payments & create professional invoices & estimates. Web Applica

Crater Invoice 6.7k Jan 4, 2023
Freelancer notes is an open source web application

#What is Freelancer Notes Freelancer Note is an freelance project management application. It is very light weight and easy to use. You are able to man

Porimol Chandro 51 Sep 22, 2022
ergodnc (Ergonomic Desk & Coffee) is an open source Laravel project that's being built live on the official Laravel YouTube Channel

About This Project ergodnc (Ergonomic Desk & Coffee) is an open source Laravel project that's being built live on the official Laravel YouTube Channel

Mohamed Said 248 Dec 26, 2022
This is an open source demo of administration panel for polymorphic relationship and SEO content

Laravel SEO admin This application demonstrates usage of polymorphic relationships described at (http://maxoffsky.com/code-blog/using-polymorphic-rela

Maksim Surguy 127 Oct 11, 2022
An open source Laravel Soundboard with Admin Panel CRUD (Create Read Update Delete) built on Laravel, Bootstrap, and Vue.js

Laravel Soundboard An open source Laravel Soundboard with Admin Panel CRUD (Create Read Update Delete) built on Laravel 5.8, Bootstrap 4, Vue.js, Boot

Jeremy Kenedy 24 Oct 28, 2022
An issue tracking tool based on laravel+reactjs for small and medium-sized enterprises, open-source and free, similar to Jira.

ActionView English | δΈ­ζ–‡ An issue tracking tool based on php laravel-framework in back-end and reactjs+redux in front-end, it's similar to Jira. You co

null 1.7k Dec 23, 2022
Free and open-source Laravel admin dashboard interface built with Livewire & Alpine.js based on Bootstrap 5

Volt Dashboard Laravel Free Frontend Web App for Laravel with Livewire & Alpine.js Never start a development project from scratch again. We've partner

Themesberg 200 Jan 4, 2023
Attendize is an open-source ticketing and event management application built using the Laravel PHP framework

Attendize is an open-source ticketing and event management application built using the Laravel PHP framework. Attendize allows event organisers to sel

Attendize 3.6k Dec 27, 2022
An Easy, Customizable & Open Source Robux Rewards Website Made With Laravel

RbxDream - Robux Earning Rewards Website Coming Soon Current repo not stable. This is an open source Robux rewards site. Understanding Core Concepts T

Underground 3 Feb 15, 2022
An open-source Laravel library for building high-quality, accessible applications and administration dashboards.

Arpite An open-source Laravel library for building high-quality, accessible applications and administration dashboards. Built using Inertia.js, React,

Arpite 3 Jul 5, 2022
Open source for selling social media accounts or accounts on other platforms.

SELLACC - Open Source Selling Accounts SELLACC is open source for selling social media accounts or accounts on other platforms. ⚠️ We not update sourc

PHAM DUC THANH 6 Nov 17, 2022
Electrik is a full-featured, open-source, starter-kit to help you build you your SaaS application.

Electrik Electrik is a full-featured and open-source stater-kit for for your next SaaS application. It's built on top of Laravel, Livewire, neerajsoha

Electrik 129 Dec 31, 2022
open source imageboard.

Shuzu an opensource imageboard written in PHP. Set-up To get shuzu running, you need to meet the prerequisites. Prerequisites For shuzu to work, it ne

japan 2 Sep 8, 2022
Caches responses as static files on disk for lightning fast page loads.

Laravel Page Cache This package allows you to easily cache responses as static files on disk for lightning fast page loads. Introduction Installation

Joseph Silber 1k Dec 16, 2022
Ignition: a beautiful error page for Laravel apps

Ignition is a beautiful and customizable error page for Laravel applications running on Laravel 5.5 and newer. It is the default error page for all Laravel 6 applications.

Spatie 260 Dec 29, 2022
Laravel Livewire full page component routing.

Laravel Livewire Routes Laravel Livewire full page component routing. This package allows you to specify routes directly inside your full page Livewir

null 22 Oct 6, 2022