diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 740b56062..374a39327 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,82 +1,66 @@ # Guidelines for Getting Help with UserFrosting -**Before** you open a new issue or ask a question in chat, you **must** read these guidelines. If it is evident from your issue that you failed to research your question properly, your issue may be closed without being answered. +**Before** you open a new issue or ask a question in chat, you **must** read these guidelines. If it is evident from your issue that you failed to research your question properly, your issue may be closed without being answered. ## Troubleshooting -There are a few common stumbling blocks that new users face when setting up UserFrosting for the first time. If you are new to the current version of UserFrosting, please first look at the [basic requirements and installation instructions](https://learn.userfrosting.com/basics/requirements/basic-stack). +There are a few common stumbling blocks that new users face when setting up UserFrosting for the first time. If you are new to the current version of UserFrosting, please first look at the [basic requirements and installation instructions](https://learn.userfrosting.com/basics/requirements/basic-stack). -If you don't find what you're looking for in the troubleshooting page, then please check the [wiki](https://github.com/userfrosting/UserFrosting/wiki) and [existing issues](https://github.com/alexweissman/UserFrosting/issues?utf8=%E2%9C%93&q=is%3Aissue), both opened and closed. Your question may have already been asked and answered before! +If you don't find what you're looking for in the troubleshooting page, then please check the [existing issues](https://github.com/userfrosting/UserFrosting/issues?utf8=%E2%9C%93&q=is%3Aissue), both opened and closed. Your question may have already been asked and answered before! -You can also search for help on Stack Overflow or in our [Forums](https://forums.userfrosting.com/). In addition to the tags for the components that UF builds upon, such as [Slim](http://stackoverflow.com/questions/tagged/slim), [Twig](http://stackoverflow.com/questions/tagged/twig), [Eloquent](http://stackoverflow.com/questions/tagged/eloquent), [jQuery Validate](http://stackoverflow.com/questions/tagged/jquery-validate), [Select2](http://stackoverflow.com/questions/tagged/jquery-select2), there is now a [UserFrosting tag](http://stackoverflow.com/questions/tagged/userfrosting) as well. +You can also search for help on Stack Overflow. In addition to the tags for the components that UF builds upon, such as [Slim](http://stackoverflow.com/questions/tagged/slim), [Twig](http://stackoverflow.com/questions/tagged/twig), [Eloquent](http://stackoverflow.com/questions/tagged/eloquent), [jQuery Validate](http://stackoverflow.com/questions/tagged/jquery-validate), [Select2](http://stackoverflow.com/questions/tagged/jquery-select2), there is now a [UserFrosting tag](http://stackoverflow.com/questions/tagged/userfrosting) as well. There are also tags for the utilities upon which UserFrosting depends, such as [Composer](http://stackoverflow.com/questions/tagged/composer-php) and [Git](http://stackoverflow.com/questions/tagged/git). ## Asking for Help -In general, the Github issue tracker should only be used for bug reports and feature requests. If you're just having trouble getting something to work, you should ask on Stack Overflow or in our [Forums](https://forums.userfrosting.com/) instead. Tag your question with the `userfrosting` tag, and optionally with any tags specific to the relevant underlying technologies, such as `slim`, `twig`, `eloquent`, `composer`, etc. You should also mention the version of UserFrosting that you are using. +In general, the Github issue tracker should only be used for bug reports and feature requests. If you're just having trouble getting something to work, you should ask on Stack Overflow. Tag your question with the `userfrosting` tag, and optionally with any tags specific to the relevant underlying technologies, such as `slim`, `twig`, `eloquent`, `composer`, etc. You should also mention the version of UserFrosting that you are using. -After posting a question on Stack Overflow or in our [Forums](https://forums.userfrosting.com/), please [link to it in chat](https://chat.userfrosting.com). This will ensure that more people see it, and provide a place where we can discuss and help clarify your question. +After posting a question on Stack Overflow, please [link to it in chat](https://chat.userfrosting.com). This will ensure that more people see it, and provide a place where we can discuss and help clarify your question. On Github, Chat, and Stack Overflow, please keep in mind the following: 1. Remember that courtesy and proper grammar go a long way. Please take the time to craft a **precise, polite issue**. We will do our best to help, but remember that this is an open-source project - none of us are getting paid a salary to develop this project, or act as your personal support hotline :wink: -2. Report any errors in detail. Vague issues like "it doesn't work when I do this" are not helpful. Show that you have put some effort into identifying the cause of the error. +2. Report any errors in detail. Vague issues like "it doesn't work when I do this" are not helpful. Show that you have put some effort into identifying the cause of the error. 3. There are three main places where you may find error messages: -- Backend (PHP-related) fatal errors: in your PHP error log. This is usually a file called `php_error_log` or something like that. In XAMPP, the default location of this file is `XAMPP/xamppfiles/logs/`. For other web hosting platforms, please consult the documentation or do a quick Google search (i.e. "where is the php error log in _____"). Some web hosts may provide a special interface for accessing the php error log, through ssh, cpanel, etc. Please ask them directly for help with this. +- Backend (PHP-related) fatal errors: in your PHP error log. This is usually a file called `php_error_log` or something like that. For other web hosting platforms, please consult the documentation or do a quick Google search (i.e. "where is the php error log in _____"). Some web hosts may provide a special interface for accessing the php error log, through ssh, cpanel, etc. Please ask them directly for help with this. -- Non-fatal PHP errors will be logged in your UserFrosting error log. Look for your `app/logs/errors.log` file. +- Non-fatal PHP errors will be logged in your UserFrosting error log. Look for your `app/logs/userfrosting.log` file. - Frontend (Javascript-related) errors: in your browser's Javascript console. See [this guide](https://learn.userfrosting.com/background/client-side) to using your browser console. -You should also try testing your code in a local development environment, to separate **code-related** issues from **server** issues. In general, we recommend that you install a local development server on your computer, rather than [testing your code directly on the production server](https://pbs.twimg.com/media/BxfENwpIYAAcHqQ.png). This means you can test your code directly on your own computer, making development faster and without the risk of exposing sensitive information to the public. We recommend installing [XAMPP](https://www.apachefriends.org) if you don't already have a local server set up. +You should also try testing your code in a local development environment, to separate **code-related** issues from **server** issues. In general, we recommend that you install a local development server on your computer, rather than [testing your code directly on the production server](https://pbs.twimg.com/media/BxfENwpIYAAcHqQ.png). This means you can test your code directly on your own computer, making development faster and without the risk of exposing sensitive information to the public. ## Contributing to the Codebase -We welcome your technical expertise! But first, please join us in [chat](https://chat.userfrosting.com) to discuss your proposed changes/fixes/enhancements before you get started. At least one member of our development team will usually be around. +We welcome your technical expertise! But first, please join us in [chat](https://chat.userfrosting.com) to discuss your proposed changes/fixes/enhancements before you get started. At least one member of our development team will usually be around. Please also be sure to read our [style guidelines](../STYLE-GUIDE.md). -When it's time to integrate changes, our git flow more or less follows http://nvie.com/posts/a-successful-git-branching-model/. - ### Branches -#### `master` -The current release or release candidate. Always numbered as `major.minor.revision`, possibly with an `-alpha`, `-beta` or `-RC` extension as well. Commits should **never** be send directly on this branch. - -#### `hotfix` -Contains the next bug fix release, typically matching the next `revision` version. Any changes not introducing a breaking change can be committed to this branch. Always numbered as `major.minor.revision`. - -When ready, changes should be merged into both **master** and **develop**. - -#### `develop` -Contains breaking changes that will need to wait for the next version to be integrated. Typically matched the next `minor` version. Always numbered as `major.minor.x`. - -When ready, changes should be merged into both **master** and **hotfix**. +#### `5.x` or `4.x` +Branch representing code for a specific version. Always numbered as `major.minor`. The next unreleased version should sit in a branch with the corresponding version name, without "develop" or "beta" moniker. -#### `feature-*` -New features that introduce some breaking changes or incomplete code should be committed in a separate `feature-{name}` branch. - -When ready, the branch should be **[squashed-merged](https://github.com/blog/2141-squash-your-commits)** ([guide](https://stackoverflow.com/a/5309051/445757)) into `develop` (or `hotfix` if it doesn't introduce a breaking change). +#### `feature-5.*` or `develop-5.*` +New features that introduce some breaking changes or incomplete code should be committed in a separate `feature-{major}.{minor}-{name}` or `develop-{major}.{minor}` branch. When ready, the branch should be merged or **[squashed-merged](https://github.com/blog/2141-squash-your-commits)** ([guide](https://stackoverflow.com/a/5309051/445757)) into the corresponding version branch. ### Releases -After every release, the `hotfix` branch (and possibly `develop`, for minor/major releases) should immediately be version-bumped. That way, new changes can be accumulated until the next release. - -When a new version is created, the version number need to be changed in `app/define.php`. `CHANGELOG.md` should also be updated and the associated tag should be created on Github. +After every minor or major release, a new version-bumped branch should be created. For example, when releasing `5.2`, a new `5.3` branch should be created for the next minor version. `CHANGELOG.md` should also be updated and the associated tag should be created on Github. #### Alpha/beta/RC releases -During alpha/beta/RC, a release candidate always sits on the `master` branch. During the alpha/beta phase, major changes can still be integrated into `master` from `develop`. However, this should bump the revision number instead of the minor/major number. During RC, only _hotfixes_ can be merged into `master`. +During alpha/beta/RC, a release candidate always sits on the version branch. Release should be numbered with the following syntax : `{major}.{minor}-{alpha|beta|rc}{patch}`. ## Working together ### Issues -Issues are used as a todo list. Each issue represent something that needs to be fixed, added or improved. Be sure to assign issues to yourself when working on something so everyones knows this issue is taken care of. +Issues are used as a todo list. Each issue represent something that needs to be fixed, added or improved. Be sure to assign issues to yourself when working on something so everyone knows this issue is taken care of. Issues are tagged to represent the feature or category it refers to. We also have some special tags to help organize issues. These includes: @@ -111,9 +95,9 @@ To maintain a clear history of progress on each milestone, milestones must be cl The [Learn Documentation](https://learn.userfrosting.com) should always be updated along side code changes. -Changes to the [learn repository](https://github.com/userfrosting/learn) should follow the same logic as the main repository, ie. any changes applied to the `hotfix` branch should be documented in the learn `hotfix` branch. This also apply to `feature-*` branches. +Changes to the [learn repository](https://github.com/userfrosting/learn) should follow the same logic as the main repository, ie. any changes applied to the `5.0` version/branch should be documented in the learn `5.0` branch. -Additionally, the `learn` repository can have `dev-*` for learn specific features and fixes. +Additionally, the `learn` repository can have `feature-*` or `develop-*` branch for specific features and fixes. ## Building the API documentation @@ -134,9 +118,3 @@ PHP-CS-Fixer is automatically loaded by Composer and can be used from the UserFr ``` vendor/bin/php-cs-fixer fix ``` - -## Useful tools - -If you are using **Atom**, be sure to checkout theses useful packages : - - [Docblockr](https://atom.io/packages/docblockr) : Used to generate [documentation block](https://github.com/userfrosting/UserFrosting/blob/master/STYLE-GUIDE.md#documentation). - - [php-ide-serenata](https://atom.io/packages/php-ide-serenata) : Integrates [Serenata](https://gitlab.com/Serenata/Serenata) as PHP IDE, providing autocompletion, code navigation, refactoring, signature help, linting and annotations. diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 2a48c344c..7a2e0ce72 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -3,7 +3,7 @@ github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: userfrosting # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username +ko_fi: lcharette # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 8e0d7621c..69fec75e2 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -2,9 +2,9 @@ Before you open an issue: -1. Make sure that your issue is a BUG or FEATURE REQUEST. General usage and troubleshooting questions should be directed to the [forums](https://forums.userfrosting.com), [chat](https://chat.userfrosting.com), or [Stack Overflow](https://stackoverflow.com/questions/tagged/userfrosting). You can also consult our chapter on [common problems](https://learn.userfrosting.com/troubleshooting/common-problems). Issues asking for general support WILL BE CLOSED automatically. +1. Make sure that your issue is a BUG or FEATURE REQUEST. General usage and troubleshooting questions should be directed to the [chat](https://chat.userfrosting.com), or [Stack Overflow](https://stackoverflow.com/questions/tagged/userfrosting). You can also consult our chapter on [common problems](https://learn.userfrosting.com/troubleshooting/common-problems). Issues asking for general support WILL BE CLOSED automatically. 2. Search the forums and current issues, both open and closed, for a similar issue. If the bug is still present but the relevant issue has been closed, you may ask us to reopen the issue. Duplicate issues will be closed automatically. -3. Make sure that you are using the latest stable version of UserFrosting (see the [release history](https://github.com/userfrosting/UserFrosting/releases)). Support for UserFrosting 3.x or earlier may be limited. +3. Make sure that you are using the latest stable version of UserFrosting (see the [release history](https://github.com/userfrosting/UserFrosting/releases)). Support for UserFrosting 4.x or earlier may be limited. If you are CERTAIN that it is appropriate to open a new issue, you must: @@ -14,6 +14,6 @@ If you are CERTAIN that it is appropriate to open a new issue, you must: 2. Mention your version of UserFrosting, as well as the browser(s) and operating system(s) in which the problem occurs. 3. Report any errors in detail. Vague issues like "it doesn't work when I do this" are not helpful. Show that you have put some effort into identifying the cause of the error. See the section on [debugging](https://learn.userfrosting.com/troubleshooting/debugging) for information on how to get more details about errors and other problems. 3. You should always test your code in a local development environment, to separate code-related issues from server issues. In general, we recommend that you install a local development server on your computer, rather than testing your code directly on the production server. This means you can test your code directly on your own computer, making development faster and without the risk of exposing sensitive information to the public. We recommend installing Vagrant and Homestead if you don't already have a local server set up. -4. If you are not conversationally proficient in English, do NOT just post a machine translation (e.g. Google Translate) to GitHub. Get help in crafting your question, either via the [forums](https://forums.userfrosting.com) or in [chat](https://chat.userfrosting.com). If all else fails, you may post your bug report or feature request in your native language, with a machine translation below that. We will tag it with `translation-needed` so that others who speak your language can find it. +4. If you are not conversationally proficient in English, do NOT just post a machine translation (e.g. Google Translate) to GitHub. Get help in crafting your question in [chat](https://chat.userfrosting.com). If all else fails, you may post your bug report or feature request in your native language, with a machine translation below that. We will tag it with `translation-needed` so that others who speak your language can find it. 5. Clear out this placeholder text. 6. Consider supporting this project by [making a donation to our Open Collective](https://opencollective.com/userfrosting/donate)! diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 5e5c8b35a..000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,61 +0,0 @@ -# Configuration for probot-stale - https://github.com/probot/stale - -# Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 550 - -# Number of days of inactivity before an Issue or Pull Request with the stale label is closed. -# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 7 - -# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled) -onlyLabels: [] - -# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable -exemptLabels: - - "confirmed bug" - - security - - "long-range planning" - -# Set to true to ignore issues in a project (defaults to false) -exemptProjects: false - -# Set to true to ignore issues in a milestone (defaults to false) -exemptMilestones: true - -# Set to true to ignore issues with an assignee (defaults to false) -exemptAssignees: false - -# Label to use when marking as stale -staleLabel: wontfix - -# Comment to post when marking as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. - -# Comment to post when removing the stale label. -# unmarkComment: > -# Your comment here. - -# Comment to post when closing a stale Issue or Pull Request. -# closeComment: > -# Your comment here. - -# Limit the number of actions per hour, from 1-30. Default is 30 -limitPerRun: 30 - -# Limit to only `issues` or `pulls` -# only: issues - -# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': -# pulls: -# daysUntilStale: 30 -# markComment: > -# This pull request has been automatically marked as stale because it has not had -# recent activity. It will be closed if no further activity occurs. Thank you -# for your contributions. - -# issues: -# exemptLabels: -# - confirmed diff --git a/README.md b/README.md index 2fce7db80..bcf7b54c3 100644 --- a/README.md +++ b/README.md @@ -2,22 +2,23 @@ [![Latest Version](https://img.shields.io/github/v/release/userfrosting/userfrosting?include_prereleases&sort=semver)](https://github.com/userfrosting/UserFrosting/releases) ![PHP Version](https://img.shields.io/badge/php-%5E8.0-brightgreen) -[![Build](https://github.com/userfrosting/userfrosting/workflows/Build/badge.svg?branch=develop-5.0)](https://github.com/userfrosting/userfrosting/actions?query=workflow%3ABuild) -[![Codecov](https://codecov.io/gh/userfrosting/userfrosting/branch/develop-5.0/graph/badge.svg)](https://codecov.io/gh/userfrosting/userfrosting) -[![Style](https://github.styleci.io/repos/18148206/shield?branch=develop-5.0&style=flat)](https://github.styleci.io/repos/18148206) +[![Build](https://github.com/userfrosting/userfrosting/workflows/Build/badge.svg?branch=5.0)](https://github.com/userfrosting/userfrosting/actions?query=workflow%3ABuild) +[![Codecov](https://codecov.io/gh/userfrosting/userfrosting/branch/5.0/graph/badge.svg)](https://codecov.io/gh/userfrosting/userfrosting) +[![Style](https://github.styleci.io/repos/18148206/shield?branch=5.0&style=flat)](https://github.styleci.io/repos/18148206) [![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](LICENSE.md) -[![Join the chat at https://chat.userfrosting.com/channel/support](https://chat.userfrosting.com/api/v1/shield.svg?name=UserFrosting)](https://chat.userfrosting.com/channel/support) -[![Backers on Open Collective](https://opencollective.com/userfrosting/backers/badge.svg)](#backers) -[![Sponsors on Open Collective](https://opencollective.com/userfrosting/sponsors/badge.svg)](#sponsors) -[![Donate](https://img.shields.io/badge/Open%20Collective-Donate-blue.svg)](https://opencollective.com/userfrosting#backer) +[![Join the chat](https://img.shields.io/badge/Chat-UserFrosting-brightgreen?logo=Rocket.Chat)](https://chat.userfrosting.com/channel/support) +[![Backers on Open Collective](https://img.shields.io/opencollective/backers/userfrosting?logo=opencollective)](#backers) +[![Sponsors on Open Collective](https://img.shields.io/opencollective/sponsors/userfrosting?logo=opencollective)](#sponsors) +[![Donate](https://img.shields.io/badge/Open_Collective-Donate-blue?logo=Open%20Collective)](https://opencollective.com/userfrosting#backer) +[![Donate](https://img.shields.io/badge/Ko--fi-Donate-blue?logo=ko-fi&logoColor=white)](https://ko-fi.com/lcharette) [https://www.userfrosting.com](https://www.userfrosting.com) -If you simply want to show that you like this project, or want to remember it for later, you should **star**, not **fork**, this repository. Forking is only for when you are ready to create your own copy of the code to work on. +If you simply want to show that you like this project, or want to remember it for later, you should **star**, not **fork**, this repository. Forking is only for when you are ready to create your own copy of the code to work on. -## By [Alex Weissman](https://alexanderweissman.com) +## By [Alex Weissman](https://alexanderweissman.com) and [Louis Charette](https://bbqsoftwares.com) -Copyright (c) 2019, free to use in personal and commercial software as per the [license](LICENSE.md). +Copyright (c) 2019-2023, free to use in personal and commercial software as per the [license](LICENSE.md). UserFrosting is a secure, modern user management system written in PHP and built on top of the [Slim Microframework](http://www.slimframework.com/), [Twig](http://twig.sensiolabs.org/) templating engine, and [Eloquent](https://laravel.com/docs/5.8/eloquent#introduction) ORM. @@ -40,13 +41,13 @@ Please see our [installation guide](https://learn.userfrosting.com/installation) ## Troubleshooting -If you are having trouble installing UserFrosting, please [join us in chat](https://chat.userfrosting.com) or try our [forums](https://forums.userfrosting.com). +If you are having trouble installing UserFrosting, please [join us in chat](https://chat.userfrosting.com). If you are generally confused about the structure and layout of the code, or it doesn't look like the kind of PHP code that you're used to, please [start from the beginning](https://learn.userfrosting.com/background). ## Mission Objectives -UserFrosting seeks to balance modern programming principles, like DRY and MVC, with a shallow learning curve for new developers. Our goals are to: +UserFrosting seeks to balance modern programming principles, like DRY and MVC, with a shallow learning curve for new developers. Our goals are to: - Create a fully-functioning user management script that can be set up in just a few minutes - Make it easy for users to quickly adapt the code for their needs @@ -63,10 +64,6 @@ UserFrosting seeks to balance modern programming principles, like DRY and MVC, w ### [Change log](CHANGELOG.md) -## Running tests - -Run `php bakery test` from the root project directory. Any tests included in `sprinkles/*/tests` will be run. - ## Development Team ### Alexander Weissman diff --git a/composer.json b/composer.json index 24d8c642f..77ad862b8 100755 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "userfrosting/userfrosting", "type": "project", "description": "A secure, modern user management system for PHP.", - "keywords": ["php user management", "usercake", "bootstrap"], + "keywords": ["php user management", "userfrosting", "php", "login", "web-framework", "user-management", "login-system", "login"], "homepage": "https://github.com/userfrosting/UserFrosting", "license" : "MIT", "authors" : [