Reputation: 1156
Anyone know how to get a user's short user name, eg. "johnsmith", given their full name, eg. "John Smith"?
Note I'm interested in any user, not the current user, so functions like NSUserName are irrelevant.
Why? I am authenticating a username and password using Authorization Services. This allows people to enter either their short name or their full name, which is nice, but I then need to know who they've actually logged in as (ie. short user name and/or user id).
Nasty hacks like [NSHomeDirectoryForUser(username) lastPathComponent] don't work consistently.
Upvotes: 3
Views: 908
Reputation: 4733
You need to use the Collaboration Framework :). Link this framework to your project, and then you just need to do the following:
CBIdentity* identity = [CBIdentity identityWithName:@"John Smith" authority:[CBIdentityAuthority localIdentityAuthority]];
NSLog(@"Posix name: %@", [identity posixName]);
And voilà!
EDIT: If you need to find only users that are bound on the network, you need to use +managedIdentityAuthority
instead of +localIdentityAuthority
.
And if you need to find both local users AND network users, use +defaultIdentityAuthority
.
Upvotes: 7