I am going to set it up so when a member logs in to the front end, if there is a user in the backend with the same username and password i log them in to the front end so they can get a list of docs to preview with front-end livery etc..
yes it is reinventing the wheel!
but just wondering could i do something like this:?
public partial class LoginUserControl : BasePage
protected void MemberLogin_OnLoggedIn(object sender, System.EventArgs e)
{
var member = Member.GetCurrentMember();
//if the member is a content admin person then attempt to log them in to the back-end
if ((member != null) && (member.Id > 0) && Roles.GetRolesForUser(member.LoginName).Any(r => ContentEditorRoleNames.Contains(r)))
{
// Authenticate users by using the provider specified in umbracoSettings.config
if (Membership.Providers[UmbracoSettings.DefaultBackofficeProvider].ValidateUser(MemberLogin.UserName, MemberLogin.Password))
{
if (Membership.Providers[UmbracoSettings.DefaultBackofficeProvider] is ActiveDirectoryMembershipProvider)
ActiveDirectoryMapping(MemberLogin.UserName, Membership.Providers[UmbracoSettings.DefaultBackofficeProvider].GetUser(MemberLogin.UserName, false).Email);
umbraco.BusinessLogic.User u = new User(MemberLogin.UserName);
doLogin(u);
}
else
{
#warning report some exception about not logging someone in to the back-end
}
}
}
/// <summary>
/// Maps active directory account to umbraco user account
/// </summary>
/// <param name="loginName">Name of the login.</param>
private void ActiveDirectoryMapping(string loginName, string email)
{
// Password is not copied over because it is stored in active directory for security!
// The user is create with default access to content and as a writer user type
if (umbraco.BusinessLogic.User.getUserId(loginName) == -1)
{
umbraco.BusinessLogic.User.MakeNew(loginName, loginName, string.Empty, email, umbraco.BusinessLogic.UserType.GetUserType(2));
umbraco.BusinessLogic.User u = new umbraco.BusinessLogic.User(loginName);
u.addApplication("content");
}
}
string[] ContentEditorRoleNames = new[] { "Content Editor", "Content Approver", "Administrator" };
Log in to backend when logging in to front end
Hi Guys,
I am going to set it up so when a member logs in to the front end, if there is a user in the backend with the same username and password i log them in to the front end so they can get a list of docs to preview with front-end livery etc..
yes it is reinventing the wheel!
but just wondering could i do something like this:?
Member.GetCurrentMember() is null at this point.. is there any way to retrieve the active member?
wow microsoft's response is use: var member = Membership.GetUser(MemberLogin.UserName);
in the OnLoggedIn event because the cookie hasn't been set yet for auth..
ok.. feels a bit dirty but ok..
is working on a reply...