πŸ“› 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)
A free open source IT asset/license management system

Snipe-IT - Open Source Asset Management System This is a FOSS project for asset management in IT Operations. Knowing who has which laptop, when it was

snipe 7.2k Jan 7, 2023
Deployer is a free and open source deployment tool.

Deployer Deployer is a PHP Application deployment system powered by Laravel 6.0, written & maintained by Stephen Ball. Check out the releases, license

Stephen Ball 886 Dec 15, 2022
Attendize is an open-source ticket selling and event management platform built on Laravel.

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 Jan 6, 2023
"Student Management System (SMS) is a solution tool that is designed to track, maintain and manage all the data generated by a School, including the grades of a student.

STUDENT-MANAGEMENT-SYSTEM "Student Management System" (SMS) is a solution tool that is designed to track, maintain and manage all the data generated b

SAMBIT RAJ 13 Aug 21, 2021
πŸ“› An open source status page system for everyone.

Cachet is a beautiful and powerful open source status page system. Overview List your service components Report incidents Customise the look of your s

Cachet 13k Dec 31, 2022
πŸ“› An open source status page system for everyone.

Cachet is a beautiful and powerful open source status page system. Overview List your service components Report incidents Customise the look of your s

Cachet 13k Jan 4, 2023
Cachet is a beautiful and powerful open source status page system.

Cachet is a beautiful and powerful open source status page system. Overview List your service components Report incidents Customise the look of your s

Cachet 12.5k Dec 5, 2021
Simple, modern looking server status page with administration and some nice features, that can run even on shared webhosting

Simple, modern looking server status page with administration and some nice features, that can run even on shared webhosting

Server status project 363 Dec 28, 2022
NukeViet 132 Nov 27, 2022
Admidio is a free open source user management system for websites of organizations and groups. The system has a flexible role model so that it’s possible to reflect the structure and permissions of your organization.

Admidio Admidio is a free open source user management system for websites of organizations and groups. The system has a flexible role model so that it

Admidio 212 Dec 30, 2022
PHP Database Migrations for Everyone

Phinx: Simple PHP Database Migrations Intro Phinx makes it ridiculously easy to manage the database migrations for your PHP app. In less than 5 minute

CakePHP 4.3k Jan 7, 2023
PHP Database Migrations for Everyone

Phinx: Simple PHP Database Migrations Intro Phinx makes it ridiculously easy to manage the database migrations for your PHP app. In less than 5 minute

CakePHP 4.3k Jan 7, 2023
Laravel API starter Kit will provide you with the tools for making API's that everyone will love

Laravel API Starter Kit Laravel API starter Kit will provide you with the tools for making API's that everyone will love, API Authentication is alread

Jose Luis Fonseca 400 Dec 29, 2022
Photo Sharing. For Everyone.

Introduction A free and ethical photo sharing platform, powered by ActivityPub federation. Official Documentation Documentation for Pixelfed can be fo

PixelFed 4.4k Jan 7, 2023
a framework for WebDevelop based on the mvc structure. The name of this project for Fun because everyone can use it. Completely simple and powerful structure for all your projects

A_A (-.-) β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„ |-| β–ˆβ–„β”€β–„β–„β”€β–ˆβ–„β”€β–ˆβ–ˆβ”€β–„β–ˆβ”€β–„β–„β–„β–„β–ˆβ”€β–„β–„β–„β–„β–ˆβ–„β”€β–ˆβ”€β–„β–ˆβ”€β–„β–„β–„β”€β–ˆβ–ˆβ–€β–„β”€β–ˆβ–ˆβ”€β–„

MasihGhaznavi 7 Jun 29, 2022
Just a simple Framework for Furries (or everyone)

FurrWork A simple framework for Furries (Or Everyone). This is a little framework of FurrApp Project Estructure app folder config The config files (De

null 1 Nov 11, 2021
Hi everyone! This is our repository for our final project in college. We're sorry if so many bug or error. Thank You

About The Project Hi everyone! This is our repository for our final project in college. We're sorry if so many bug or error. Thank You About Laravel L

Lintang Bima Sakti 3 Dec 9, 2021
WordPress entities creation library (CPT, CT, native option page, ACF option page, user role, block pattern category, block category…)

WordPress entities creation library (CPT, CT, native option page, ACF option page, user role, block pattern category, block category…)

LoΓ―c Antignac 2 Jul 25, 2022