Authenticating One-Time Users

There is a local auto body shop in my area that might be interested in having me build a website for them.

One feature in which they are interested is the ability for customers to track the status of their car repair.

However, here is the issue…

Such a feature would obviously require authentication, but the hope is that after a customer’s car is repaired they wouldn’t ever come back - unless they are very accident prone!

So what do you do when you need a way to authenticate users - so they can view private information - but you really don’t want to require them to create an account that is really only for a short-time usage?

I was thinking of creating a “Quick Registration Form” whereby they enter an E-mail and Password, and then click on a link to activate things, but I am fearful that is not secure enough.

Ultimately I want something…

a.) Secure (i.e. can’t be hacked/guessed easily)
b.) Convenient for user
c.) Ensure the right person is viewing the right account details

Any ideas or suggestions?

If you can access the names of the customers create an account with temp password with the name of the customer that will expire when repair is done. When customer is at the shop give him that password and tell him he can track the repair from web page. Or maybe send this information by email (a bit insecure but if you don’t show any credentials or important information except the state of the repair on the page it should not matter really?)

Use http://php.net/manual/en/function.password-hash.php for passwords or equivalent library if php < 5.5.
https://phpbestpractices.org/#passwords

Or you could consider a page totally without authentication that will show the repair state only for given user/reg plate. Like visit address autorepair.com/customer_id or autorepair.com/registrationplatenumber, which is anyway public information. This would make it easy to access it. User convenient, but really depends how much information and what kind of information you want to show to the customers.

I take the auto body shop would be updating the tracking of the repair, well I’m assuming like most repair shops that they enter in the user’s information when setting up the repair appointment. Well, just have the invoice generate a temporary password for that repair that the user can use if so desired to track the status of the repair. Maybe give the user an option when the shop is setting up the invoice to generate that password or not ( a checkbox?)

@Pepster has the right idea.
Another approach would be to simply “authenticate” based on that username (entered or supplied when the account is created) and the Vehicle Identification Number (VIN).
The VIN is unique and not likely to be ‘known’ or ‘discovered’ by another user.

an additional option were to use single sign in (e.g. via facebook).

regarding the lifetime of user accounts, you can leave them in the DB. DBs can handle awful lots of data. for instance forums usually don’t delete user accounts either.

If you want it bound to a particular customer, could you just use the tag number? If necessary, a related access code could be passed via the invoice.

You could prepare the input with strtolower and a function to remove spacers so you’d get the right result.

Thanks for the replies.

I have lots of thoughts and questions!

Here were my initial concerns…

1.) Because we hope an auto body repair is an infrequent - if not single - occurrence, I don’t know how motivated people would be to set up an account - as opposed to your online banking or email account.

2.) FaceBook is out.

3.) I was thinking of letting people sign up using their e-mail, but then what would stop someone who knew your e-mail from signing up as you and seeing all of your repair details?! :open_mouth:

4.) I think we will have enough sensitive details that this should be treated as requiring lots of privacy and security.

If you just wrecked your car, wouldn’t you find it useful to be able to track your repair - which could take weeks or over a month?

Wouldn’t it also be nice to receive updates via SMS or email, and to track the cost of the repair and maybe even track insurance stuff?

If so, then what would you expect/demand as a customer as far as how your account is set up and how much effort it required?

Make sense?

Send a link to the customer’s email that they have to use to login to the system. That way, only the owner of the email address will have access. There was an article on SitePoint not so long back about passwordless logins.

An alternative would be to just email the updated info on request.

Not very secure…

So the general rule of thumb is that A and B are mutually exclusive. :stuck_out_tongue:

But in seriousness, trying to get those two things together is considered the ‘holy grail’ of logins. Usually you trade one for the other.

If the login is truly ‘one time use’ (IE: for the length of the repair), use the order ID (job id, whatever the repair company uses as a Unique ID for their billing) as a login. Password can be scrambled on site using whatever algorithm you want to generate an entropic randomized password.

That said… what private information would you display? The customer doesnt need to be told where they live, they know that information already. They dont care about their own VIN number (do you know YOUR VIN number? How often have you used it?). Sure, someone could identify a make/model or tag, but they can do that by going to the shop and looking with their own eyes anyway…

1 Like

It would be secure enough for this application as long as all you are reporting is the current status of the repair.

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.