Manual Magento User Authentication

Having just been building a webapp to work in conjunction with a Magento Store, it’s made sense to use the existing Magento login.  For my own future reference, and that of anyone else that might need it, here’s how to do it!

To get Customers authenticated,

// Or whatever the path to your app/Mage.php happens to be ...
require_once( dirname(__FILE__).'/app/Mage.php' );
// Initialize Magento ...
Mage::app("default");
// Set the variables that we care about.
$id = 1;  // The Store ID.  Since Magento can handle multiples, this may change.
$username = 'their.email@their.domain.com';  // Their email address / username (the same thing)
$password = 'theirpassword';  // Their password.
	
try{
	$blah = Mage::getModel('customer/customer')->setWebsiteId($id)->authenticate($username, $password);
}catch( Exception $e ){
	$blah = false;
}

As it will throw an exception if the authentication doesn’t actually happen, instead of simply returning false, we’ve got to catch that and convert it into a false ourselves.

Now, if you want to authenticate admins, give this bit a go:

// Or whatever the path to your app/Mage.php happens to be ...
require_once( dirname(__FILE__).'/app/Mage.php' );
// Initialize Magento ...
Mage::app("default");
// Set the variables that we care about.
$username = 'admin';  // Or whatever username we're going with.
$password = 'password'; // Obviously, replace this with whatever the actual password you're looking to validate is.

$blah = Mage::getModel('admin/user')->authenticate($username, $password);

After either of these blocks of code, depending on whether you’re validating an admin or customer, $blah will contain TRUE for it being valid, or FALSE for it being invalid!

Simple, huh?

An Apple Anecdote

Friday evening, I ordered a MacBook Pro for my wife.

Figuring it was about $1000 anyways, I just tacked on one-day shipping.

Saturday, when I get the notice that my order has shipped, it says that it’s going to my old address across the state from me. About five hours away. So I call Apple, and explain the situation, and they say that I should go to apple.com/go/shipment, enter the Order ID number, and shipping zip code, and it’ll let me redirect the shipment, but as the shipment hasn’t actually been processed by FedEx yet, I’ll have to wait to do it on Sunday. Alrighty, I think. Not a problem.

I change it on Sunday.

Monday morning I check the tracking number, and find that it’s still going to my old address across the state.

I call Apple to ask what’s up, they say that the request went through to FedEx just after 4am Monday morning. To make up for my having this problem, they’re refunding my $27 or whatever that I had paid as a shipping fee.  ”Ah well, it’ll come on Tuesday”, I say.

I call FedEx around noon-ish, and they say that they never received any requests from Apple to change the shipping address whatsoever, but it may just need time to propagate through.

Tuesday Morning. Tracking number says it’s still going to my old address.

I call Apple. Speak with a wonderful young lady named Lisa, who puts me on hold while she calls FedEx directly, and then comes back saying that FedEx has assured her the package will be delivered to my present address on Wednesday. And to make up for this, Lisa tells me, Apple is going to send us a free case for the MacBook Pro. Same one-day shipping as the original order. “Great!”, I say.

A couple hours later, when I receive the email confirmation that the case has shipped, where do you suppose the new parcel is getting shipped to?

Yup. You’ve guessed it.

My old address.

UPDATE:  As of Wednesday Morning, the package is -still- at the holding facility across the state.  I just called FedEx to ask WTF, and it seems that the facility got the request to redirect the package yesterday, they just didn’t act on it.  So Marcy (very wonderful woman that she is) called them up (while I was on hold) (yay) and ensured (theoretically) that it would get forwarded today, and arrive tomorrow.

GAH!

And all this to get a package that was originally shipped from a warehouse in Middletown, PA — a mere 20 minutes down the road from me.

Vermont Letterpress

Some photos of what remains of my godfather’s printing supplies. Posted here for ease of sharing and discussion.

Ndizi Project Management 0.9.6 PRE-RELEASE

So, largely still a work-in-progress, I overhauled how most of the functions are written and abstracted many of the grunt work out. The client front-end page probably breaks like crazy, I’ll be getting that tomorrow, but for anyone who wants to take a look at it as-is, here goes:

Ndizi Class 0.9.6 Snapshot

The code in the back is a -lot- cleaner. I’ve abstracted alot of the form creation into sub-functions, as well as tabular display. Also built in a capability for filters, and added ‘active’ properties to clients and projects. The structure is in place to add comments and file attachments to things, but I need to sort out use-cases and how to actually display them. I’m currently thinking maybe a lightbox pop-up. Not sure.

Any bug reports appreciated. Feature suggestions also welcome, but they’ll be addressed in the coming week or two.