All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Logic Groups now use the database for quick audience lookup
- Updated forn schema version to 3
- participant middleware was being loaded on the admin side of modules
- Soft deletes on most models, and ability to restore the models and their children
- Activity Instances return dummy models if the control model does not exist
- Resolve Transformer contract rather than using VFGTransformer.
- PR-344: Use new form schema
- Fix client caching not properly caching response
- Add position to js variables
participant-activity
andparticipant-module
middleware groups- Migrations to update settings
- Added a title prefix to resource
- Name the main module route 'module.admin' and 'module.participant'
5.0.0 - (11/08/2021)
- Cookies warning blade template is no longer included with the SDK
- When support redirects to a module page, the query string is added to the new redirection
- Handle error thrown by the
ControlServiceProvider
when settings retrieved in the service provider due to no set app key
- Image URL for module instance and activity models
- Added a blade wrapper around content and the frontend body, to allow for further html customisations
- Added Setting framework for global and user settings (portal-147, portal-265)
- Add more injected data that js can access
- Old input
- Validation errors
- All named routes
- config values
support.url
andsupport.api_url
that can be used to get the base url or api url.
- Upgraded from PHP 7.4 to PHP 8.0
- Upgraded from Laravel 6.0 to Laravel 8.0
- Use modern factories for everything rather than legacy factories. If your tests use any factories from Control or the SDK, you'll need to change them to use modern factories.
- Changed the variable names to be injected for JavaScript use, and do so through a view composer for all Bristol SU bases.
- Add
hasUser
,hasGroup
andhasRole
to the Authentication contract. - Neatened up middleware groups to only those documented
- Moved authentication to the portal-auth package
- Moved Passport Service provider
- Moved the `BristolSU\Support\Authentication\Contracts\Authentication implementations
- Moved the request->user() function override to the portal-auth package
- Moved everything in the
BristolSU\Support\User
namespace to package.BristolSU\Support\User\User
->BristolSU\Auth\User\AuthenticationUser
BristolSU\Support\User\UserRepository
->BristolSU\Auth\User\AuthenticationUserRepository
BristolSU\Support\User\Contracts\UserRepository
->BristolSU\Auth\User\Contracts\AuthenticationUserRepository
- User authentication resolvers for both API and Web
BristolSU\Support\User\Contracts\UserAuthentication
->BristolSU\Auth\User\Contracts\AuthenticationUserResolver
- CheckAdminIsAtLeastUser obsolete because now handled in the Authentication
getDatabaseUser()
andsetDatabaseUser()
from testing - tests no longer use database users- Deleted
BristolSU\ActivityInstance\AuthenticationProvider\ActivityInstanceProvider
as now handled throughWebRequestActivityInstanceResolver
andApiActivityInstanceResolver
BristolSU\Testing\ActivityInstance\LaravelAuthActivityInstanceResolver
changed to use session rather than the whole laravel auth system, and renamed toBristolSU\Testing\ActivityInstance\SessionActivityInstanceResolver
- Simplified default header (portal-226)
- Removed the passport dependency
- Removed support for the blade partials cookies_warning and analytics
4.7.6 - (20/03/2021)
- portal-19: Set action history messages to a text not string
- portal-330: Stop UpdateProgress from timing out by chunking resulting jobs
4.7.5 - (06/03/2021)
- portal-85: Only update progress snapshots when changes have been made
4.7.4 - (09/09/2020)
- ServiceRequest resolves from contract not concretion
4.7.3 - (09/09/2020)
- portal-123: Change the name of registerConnection to registerConnector
- Updated dependencies
- portal-124: Register services using the correct alias
4.7.2 - (24/08/2020)
- findForPassport method to the Database User to allow for passport API connection
4.7.1 - (15/08/2020)
- Relationship between the activity instance and progress models
- Relationship between the module instance and module instance progress models
- ProgressRepository for retrieving progress information from the database
4.7.0 - (07/08/2020)
- Laravel Passport upgraded to v9
- Publish groups. All modules can now be published with the module tag
- registerAction method in Service Provider to register an action.
- Completion Condition array in service provider
- Registering services extracted to base service provider
- Registering filters in array in the service provider
- First draft of documentation
4.6.1 - (16/06/2020)
- Removed the AirTable progress integration on
4.6.0 - (15/06/2020)
- Progress framework for taking snapshots and exporting the progress
- participantName method to the Activity Instance
- ModuleInstance Evaluator now returns the percentage.
4.5.1 - (12/05/2020)
- Removed prophecy from testcase
4.5 - (12/05/2020)
- AudienceMemberFactory::fromUserInLogic to get an audience member of a user filtered to a logic group
- CachedAudienceMemberFactory to cache audience member results
- Use AudienceMemberFactory::fromUserInLogic in LogicAudience
- ActivityInstanceRepository::allForResource
- ActivityRepository::allForAdministrator returns inactive and disabled activities too
4.4.1 - (27/04/2020)
- Update dependencies
- Set filter caching to 15 minutes
- Allow filter caching duration to be set through the environment variables
4.4 - (23/04/2020)
- Module instance groupings table
- grouping_id and order columns on module_instance
- ModuleInstance::grouping relationship
4.3.3 - (22/04/2020)
- Updated Dependencies
4.3.2 - (03/04/2020)
- Module instance checks against being disabled or not active are only made for participants
- moduleparticipant middleware group to mark the participant side of a module
4.3.1 - (02/04/2020)
- Ability to control caching of filters through config
- Script tag id for google analytics takes from config
4.3 - (23/03/3030)
- should_queue column to action instances
- If should_queue is false, the action is dispatched immediately
4.2 - (23/03/2020)
- Action is now an abstract class not an interface
- All actions must return an ActionResponse class instance
- All actions must define a 'run' method instead of a 'handle' method
- Created action history table
- HasHistory trait for actions
- Get all history through an action instance
4.1 - (19/03/2020)
- UserTagged and RoleTagged filters
- \BristolSU\Support\Action\ActionInstanceRepository::forModuleInstance method
- \BristolSU\Support\Action\ActionInstanceRepository::getById method
- \BristolSU\Support\Action\ActionInstanceRepository::update method
- \BristolSU\Support\Action\ActionInstanceRepository::delete method
- \BristolSU\Support\Action\ActionInstanceRepository::all method
- \BristolSU\Support\Completion\CompletionConditionInstanceRepository::getById method
- \BristolSU\Support\Completion\CompletionConditionInstanceRepository::update method
- \BristolSU\Support\Filters\FilterInstanceRepository::getById method
- \BristolSU\Support\Filters\FilterInstanceRepository::update method
- \BristolSU\Support\Filters\FilterInstanceRepository::delete method
- \BristolSU\Support\Logic\LogicRepository::getById method
- \BristolSU\Support\Logic\LogicRepository::update method
- \BristolSU\Support\Logic\LogicRepository::delete method
- \BristolSU\Support\ModuleInstance\ModuleInstanceRepository::update method
- \BristolSU\Support\ModuleInstance\ModuleInstanceRepository::delete method
4.0 - (18/03/2020)
- Action Instances, Activities, Module Instances and Logics retrieve the user ID from UserAuthentication not Authentication
- Changed event_field in action_instance_fields table to action_value
- Allow text to be entered into the action value, replace any {{event:field}} with the event 'field' value
- Added static Action::options() method to return a form schema
- ActionInstance::action_schema property
- getFields and getFieldMetaData from Action contract
- ActionInstance::action_fields property
- Fix bug with ApiAuthentication implementation picking up a request body as a query string
3.1.1 - (18/03/2020)
- Middleware to throw an ActivityDisabled exception if the activity is disabled
- Middleware to throw a ModuleInstanceDisabled exception if the module instance is disabled
3.1 - (16/03/2020)
- Activity Instance related middleware now only runs on participant routes
- Middleware to check the user in Authentication belongs to the database user
- Middleware to check the logged in group and role are valid
- Middleware to check the Activity Instance is owned by the logged in credentials
- Use the request query parameters to save authentication information, as opposed to the session
- Use request query parameters to get activity instance information, as opposed to the session
- LaravelAuthActivityInstanceResolver class
- WebSessionAuthentication class
- LogIntoActivityInstance Middleware
3.0.2 - (11/03/2020)
- Removed Global Scope from the relationship between a connection and a module instance service
- Remove BristolSU\Support\ModuleInstance\Contracts\Evaluator\ActivityInstanceEvaluator::evaluateAdministrator function
- Remove BristolSU\Support\ModuleInstance\Contracts\Evaluator\ModuleInstanceEvaluator::evaluateAdministrator activity instance parameter
3.0.1 - (28/02/2020)
BristolSU\Support\Testing\HandlesAuthorization to help with testing modules with permissions
3.0 - (22/02/2020)
- Filter::options() should now return a \FormSchema\Schema\Form class
- Filter::toArray() converts the FormSchema to a Vue Form Generator schema
- Updated all filters supplied by the SDK
- CompletionCondition::options() should now return a \FormSchema\Schema\Form class
- ModuleBuilder calls toArray on the completion condition as opposed to casting itself.
- Activity Repository::active() now returns only activities that are enabled
- Implement CompletionCondition::toArray and ::toJson for converting completion conditions to array/json representations.
- enabled column to the activities and module_instances tables
- enabled scope to an Activity model
- enabled scope to a Module Instance model
- \BristolSU\Support\ModuleInstance\ModuleInstanceRepository::allThroughActivity() to get all module instances for an activity
- \BristolSU\Support\ModuleInstance\ModuleInstanceRepository::allEnabledThroughActivity() to get all enabled module instances for an activity
- user_id column to an Activity, Module Instance, Action Instance and Logic Group
- 'For' property to a Module model. This property is either user, group or role and allows modules to, e.g., require a group to be logged in to use the module.
- HasRevision trait for tracking model revisions in the SDK
- \BristolSU\Support\Completion\Contracts\CompletionConditionTester::evaluatePercentage method added for getting the percentage complete of a completion condition
2.1 - (05/02/2020)
- .gitattributes file
- \BristolSU\Support\User\UserRepository::getById method for retrieving a user by ID
- \BristolSU\Support\User\UserRepository::setRememberToken to set a users remember token
- \BristolSU\Support\User\User::getEmailForVerification to get the email to use for verification
- \BristolSU\Support\User\User::getEmailForPasswordReset to get the email to use for password resets
2.0.1 - (05/02/2020)
- Integration to use a user as a notifiable in the laravel framework, for mail
2.0 - (04/02/2020)
- doctrine/dbal dependency for editing migrations
- Logout function for UserAuthentication
- UserRepository::getWhereEmail function to retrieve a user via email
- UserRepository::getFromControlId function to retrieve a user via control ID
- UserRepository::getFromRememberToken function to get by remember token
- Functions to get the control user from the database user
- Forename, surname, email and student ID columns from database user model.
- UserRepository::getWhereIdentity function
1.1 - (30/01/2020)
- Bumped the control dependency to version 1 (stable)
- Allow Module Instance Setting values to be null
- Refresh the module builder instance in the factory
- Laravel Session Authentication
- Laravel Web Authentication
1.0.1 - (23/01/2020)
- Generate a new module builder each time the module factory is used
- Make module instance setting values nullable
- Connection ID attribute is now fillable for a module instance service
- Prefer stable dependencies
1.0 - (17/01/2020)
- Initial Release