PHP / MySQL / Doctrine

PHP / MySQL / Doctrine

Cancelled

Job Description

Title: PHP / MySQL / Doctrine

I am creating a larger project, and I need help from time to time with development tasks. This would be ongoing work over the next few months.

I'm looking for someone cheap but good. When this project is launched, if you're still working with me, you would get a substantial reward for your work with the potential of full-time employment/contract. I really am looking for a long term relationship here, but I am currently on a very limited budget.

You'll need to be disciplined, adhere to PSR2/Symfony coding standards, and understand PHP, OOP, Smarty or TWIG, coding within a framework, using classes rather than procedural functions, and ideally have worked with Composer.

The first task is to create a "UserProvider" for Cartalyst Sentry: http://docs.cartalyst.com/sentry-2

At http://docs.cartalyst.com/sentry-2/installation/composer you'll find instructions on how to set up Sentry within a project having installed it with Composer.

The database storage for the module is currently using the Eloquent ORM library from Laravel:

$userProvider = new Cartalyst\Sentry\Users\Eloquent\Provider($hasher);

Similarly, the Group Provider and Throttling provider are also using Eloquent.

I want you to develop a user, group and throttling provider using Doctrine DBAL instead.

Take a look at the following code to see what's needed - basically, the files in these links need to be replaced with code using Doctrine DBAL instead of Eloquent:

https://github.com/cartalyst/sentry/tree/master/src/Cartalyst/Sentry/Users/Eloquent
https://github.com/cartalyst/sentry/tree/master/src/Cartalyst/Sentry/Throttling/Eloquent
https://github.com/cartalyst/sentry/tree/master/src/Cartalyst/Sentry/Groups/Eloquent

You may also need to create a new generic Facade (Sentry provided examples: https://github.com/cartalyst/sentry/tree/master/src/Cartalyst/Sentry/Facades)

Finally, for bonus points, please provide some PHPUnit tests for this. That part is not required, but would be beneficial.

The final deliverable should include as follows:

1) Your complete code, set up in a namespace called 'System/Classes'.

2) Your composer.json and composer.lock including all required components

3) A file called 'index.php' that checks whether a username/password is a valid user, using Sentry. It should be able to log in a user and check what permissions are available using Sentry functionality.

4) A file called 'adduser.php' that adds a user to the database using Sentry functionality (similar to http://docs.cartalyst.com/sentry-2/users/create).

5) A file called 'addgroup.php' that adds a group to the database using Sentry functionality (see example at http://docs.cartalyst.com/sentry-2/groups/create).

6) A file called 'throttle.php' that simulates a user logging in, with a 1 second interval, which will lead to a throttle ban being enforced. The output must reflect that the ban is in place.

7) A SQL file to create the tables required for the solution.

The project will be deemed complete when you have a working solution for Doctrine DBAL, using a straight-forward implementation. All aspects of Sentry must be functional using Doctrine DBAL instead of the Eloquent. No information can be hard-coded in the classes using the namespace System\Classes.

Note: Please only apply for this project if you are really capable of doing it. I am not interested in trying you out unless you have the experience to handle this.

You don't need direct experience with any of these technologies, but you need enough experience to be able to figure out what you need to do. I am happy to explain a bit further if needed, but the above information should be sufficient.

Agencies, including Indian agencies: yes, I will accept proposals from agencies including Indian agencies. If so, please ensure the programmer you provide has sufficient experience to handle this project. I would require the name of your programmer together with an overview of their experience in order for your company to be considered.

Please provide your estimated cost of the completed solution.

Finally, in your proposal OR in a private message please mention the word "Slim" - I really would like to know you have read all of this text.

Other open jobs by this client