/// <summary> /// Register a new OCM User (identified by email/password) /// </summary> /// <param name="model"></param> /// <returns></returns> public User RegisterNewUser(API.Common.Model.RegistrationModel model) { model.EmailAddress = model.EmailAddress.Trim().ToLower(); var existingUser = dataModel.Users.FirstOrDefault(u => u.EmailAddress.ToLower() == model.EmailAddress.ToLower().Trim()); if (existingUser != null) { //if existing user has same email address, cannot perform new registration return(null); } var userDetails = new Core.Data.User(); userDetails.IdentityProvider = "OCM"; userDetails.Identifier = model.EmailAddress; userDetails.Username = model.Username; userDetails.EmailAddress = model.EmailAddress; userDetails.DateCreated = DateTime.UtcNow; userDetails.DateLastLogin = DateTime.UtcNow; userDetails.IsProfilePublic = true; dataModel.Users.Add(userDetails); dataModel.SaveChanges(); SetNewPassword(userDetails.Id, (PasswordChangeModel)model); AssignNewSessionToken(userDetails.Id); return(API.Common.Model.Extensions.User.BasicFromDataModel(userDetails)); }
public static Model.User FromDataModel(Core.Data.User source) { if (source == null) { return(null); } return(new Model.User() { ID = source.ID, IdentityProvider = source.IdentityProvider, Identifier = source.Identifier, CurrentSessionToken = source.CurrentSessionToken, Username = source.Username, Profile = source.Profile, Location = source.Location, WebsiteURL = source.WebsiteURL, ReputationPoints = source.ReputationPoints, Permissions = source.Permissions, PermissionsRequested = source.PermissionsRequested, DateCreated = source.DateCreated, DateLastLogin = source.DateLastLogin, IsProfilePublic = source.IsProfilePublic, IsPublicChargingProvider = source.IsPublicChargingProvider, IsEmergencyChargingProvider = source.IsEmergencyChargingProvider, Latitude = source.Latitude, Longitude = source.Longitude, EmailAddress = source.EmailAddress, SyncedSettings = source.SyncedSettings }); }
/// <summary> /// Register a new account in database /// </summary> /// <param name="username">User name</param> /// <param name="email">Email</param> /// <param name="password">Password</param> /// <returns>returns true if user added to database</returns> public bool Register(string email, string username, string password) { Core.Data.User user = new Core.Data.User(); user.email = email; user.username = username; user.password = password; Core.Data.DataProvider db = Core.Data.DataProvider.DataProviderFactory(); return(db.Insert(user)); }
public static string GetProfileImageURL(Core.Data.User source) { if (String.IsNullOrEmpty(source.EmailAddress)) { return(null); } var emailHash = OCM.Core.Util.SecurityHelper.GetMd5Hash(source.EmailAddress); return("https://www.gravatar.com/avatar/" + emailHash + "?s=80&d=robohash"); }
public bool UserAdd(Core.Data.User model) { try { UserRepository.Insert(model); return(true); } catch (Exception ex) { return(false); } }
/// <summary> /// returns a User object with sensitive information removed /// </summary> /// <param name="source"></param> /// <returns></returns> public static Model.User BasicFromDataModel(Core.Data.User source) { if (source == null) { return(null); } return(new Model.User() { ID = source.ID, Username = source.Username, ReputationPoints = source.ReputationPoints }); }
/// <summary> /// returns a User object with sensitive information removed /// </summary> /// <param name="source"></param> /// <returns></returns> public static Model.User BasicFromDataModel(Core.Data.User source) { if (source == null) { return(null); } return(new Model.User() { ID = source.Id, Username = source.Username, ReputationPoints = source.ReputationPoints, ProfileImageURL = GetProfileImageURL(source) }); }
public static Model.User PublicProfileFromDataModel(Core.Data.User source) { if (source == null) { return(null); } return(new Model.User() { ID = source.ID, Username = source.Username, ReputationPoints = source.ReputationPoints, Location = source.Location, Profile = source.Profile, DateCreated = source.DateCreated, DateLastLogin = source.DateLastLogin }); }
public static Model.User PublicProfileFromDataModel(Core.Data.User source, bool includeEmailHash = false) { if (source == null) { return(null); } return(new Model.User() { ID = source.Id, Username = source.Username, ReputationPoints = source.ReputationPoints, Location = source.Location, Profile = source.Profile, DateCreated = source.DateCreated, DateLastLogin = source.DateLastLogin, ProfileImageURL = GetProfileImageURL(source) }); }
public Core.Data.User UserEdit(Core.Data.User model) { var newUser = UserRepository.GetById(model.Id); foreach (var item in model.GetType().GetProperties()) { foreach (var item2 in newUser.GetType().GetProperties()) { if (item.GetValue(model) != null) { if (item2.Name == item.Name) { item2.SetValue(newUser, item.GetValue(model)); } } } } UserRepository.Update(newUser); return(newUser); }
private ActionResult ProcessLoginResult(string userIdentifier, string loginProvider, string name, string email) { //TODO: move all of this logic to UserManager string newSessionToken = Guid.NewGuid().ToString(); using (var dataModel = new OCMEntities()) { var userDetails = dataModel.Users.FirstOrDefault(u => u.Identifier.ToLower() == userIdentifier.ToLower() && u.IdentityProvider.ToLower() == loginProvider.ToLower()); if (userDetails == null) { //create new user details userDetails = new Core.Data.User(); userDetails.IdentityProvider = loginProvider; userDetails.Identifier = userIdentifier; if (String.IsNullOrEmpty(name) && loginProvider.ToLower() == "twitter") { name = userIdentifier; } if (String.IsNullOrEmpty(name) && email != null) { name = email.Substring(0, email.IndexOf("@")); } userDetails.Username = name; userDetails.EmailAddress = email; userDetails.DateCreated = DateTime.UtcNow; userDetails.DateLastLogin = DateTime.UtcNow; userDetails.IsProfilePublic = true; //only update session token if new (also done on logout) if (String.IsNullOrEmpty(userDetails.CurrentSessionToken)) { userDetails.CurrentSessionToken = newSessionToken; } dataModel.Users.Add(userDetails); } else { //update date last logged in and refresh users details if more information provided userDetails.DateLastLogin = DateTime.UtcNow; if (userDetails.Username == userDetails.Identifier && !String.IsNullOrEmpty(name)) { userDetails.Username = name; } if (String.IsNullOrEmpty(userDetails.EmailAddress) && !String.IsNullOrEmpty(email)) { userDetails.EmailAddress = email; } //only update session token if new (also done on logout) if (String.IsNullOrEmpty(userDetails.CurrentSessionToken)) { userDetails.CurrentSessionToken = newSessionToken; } } //get whichever session token we used //newSessionToken = userDetails.CurrentSessionToken; //store updates to user dataModel.SaveChanges(); PerformCoreLogin(OCM.API.Common.Model.Extensions.User.FromDataModel(userDetails)); /*if (HttpContext.Items.ContainsKey("_postLoginRedirect")) * { * string returnURL = HttpContext.Items["_postLoginRedirect"].ToString(); * return Redirect(returnURL); * }*/ if (!String.IsNullOrEmpty(Session.GetString("_redirectURL"))) { string returnURL = Session.GetString("_redirectURL"); return(Redirect(returnURL)); } else { //nowhere specified to redirect to, redirect to home page return(RedirectToAction("Index", "Home")); } } }
private ActionResult ProcessLoginResult(string userIdentifier, string loginProvider, string name, string email) { //TODO: move all of this logic to UserManager string newSessionToken = Guid.NewGuid().ToString(); var dataModel = new OCMEntities(); var userDetails = dataModel.Users.FirstOrDefault(u => u.Identifier.ToLower() == userIdentifier.ToLower() && u.IdentityProvider.ToLower() == loginProvider.ToLower()); if (userDetails == null) { //create new user details userDetails = new Core.Data.User(); userDetails.IdentityProvider = loginProvider; userDetails.Identifier = userIdentifier; if (String.IsNullOrEmpty(name) && loginProvider.ToLower() == "twitter") name = userIdentifier; if (String.IsNullOrEmpty(name) && email != null) name = email.Substring(0, email.IndexOf("@")); userDetails.Username = name; userDetails.EmailAddress = email; userDetails.DateCreated = DateTime.UtcNow; userDetails.DateLastLogin = DateTime.UtcNow; userDetails.IsProfilePublic = true; //only update session token if new (also done on logout) if (String.IsNullOrEmpty(userDetails.CurrentSessionToken)) userDetails.CurrentSessionToken = newSessionToken; dataModel.Users.Add(userDetails); } else { //update date last logged in and refresh users details if more information provided userDetails.DateLastLogin = DateTime.UtcNow; if (userDetails.Username == userDetails.Identifier && !String.IsNullOrEmpty(name)) userDetails.Username = name; if (String.IsNullOrEmpty(userDetails.EmailAddress) && !String.IsNullOrEmpty(email)) userDetails.EmailAddress = email; //only update session token if new (also done on logout) if (String.IsNullOrEmpty(userDetails.CurrentSessionToken)) userDetails.CurrentSessionToken = newSessionToken; } //get whichever session token we used //newSessionToken = userDetails.CurrentSessionToken; //store updates to user dataModel.SaveChanges(); PerformCoreLogin(OCM.API.Common.Model.Extensions.User.FromDataModel(userDetails)); if (!String.IsNullOrEmpty((string)Session["_redirectURL"])) { string returnURL = Session["_redirectURL"].ToString(); return Redirect(returnURL); } else { //nowhere specified to redirect to, redirect to home page return RedirectToAction("Index", "Home"); } }
public bool AddUserCheck(Core.Data.User model) { return(UserRepository.Table.Where(c => c.Email == model.Email || c.UserName == model.UserName).Any()); }
/// <summary> /// Register a new OCM User (identified by email/password) /// </summary> /// <param name="model"></param> /// <returns></returns> public User RegisterNewUser(API.Common.Model.RegistrationModel model) { model.EmailAddress = model.EmailAddress.Trim().ToLower(); var existingUser = dataModel.Users.FirstOrDefault(u => u.EmailAddress.ToLower() == model.EmailAddress.ToLower().Trim()); if (existingUser != null) { //if existing user has same email address, cannot perform new registration return null; } var userDetails = new Core.Data.User(); userDetails.IdentityProvider = "OCM"; userDetails.Identifier = model.EmailAddress; userDetails.Username = model.Username; userDetails.EmailAddress = model.EmailAddress; userDetails.DateCreated = DateTime.UtcNow; userDetails.DateLastLogin = DateTime.UtcNow; userDetails.IsProfilePublic = true; dataModel.Users.Add(userDetails); dataModel.SaveChanges(); SetNewPassword(userDetails.ID, (PasswordChangeModel)model); AssignNewSessionToken(userDetails.ID); return API.Common.Model.Extensions.User.BasicFromDataModel(userDetails); }