// admin and testing functions public void CreatePersonForUser(Guid guid, string sponsor) { string first = null; string last = null; using (var tudb = new Trips4.Data.Models.TRIPS_UserEntities()) { var found = tudb.GetUserById(guid).FirstOrDefault(); if (found == null) { throw new Exception("User not found " + guid.ToString()); } Debug.Assert(guid == found.UserId.Value); first = found.FirstName ?? string.Empty; last = found.LastName ?? string.Empty; } using (var tdb = new Trips4.Data.Models.TRIPSEntities()) { var pid = new ObjectParameter("PersonID", 0); tdb.CreatePerson(guid, pid, first, last, sponsor); } }
public Person GetUserByID(Guid guid, bool loadRoles) { var person = new Person(); // get Person data from Trips using (var tdb = new Trips4.Data.Models.TRIPSEntities()) { var found = tdb.GetPersonById(null, guid).FirstOrDefault(); if (found == null) { Logger.Info("Person not found (so he cannot sponsor projects) " + guid.ToString()); } else { Debug.Assert(found.PersonGUID == guid); person.profile.PersonID = found.PersonID; person.HasProjects = found.SponsorsProject ?? false; person.SponsorOrganizationId = found.SponsorOrganizationId ?? 0; person.SponsorOrganizationName = found.SponsorOrganization; } if (person.HasProjects) { person.SponsoredProjectVersionIds.AddRange(tdb.GetPersonsProjectVersionIds(person.profile.PersonID).Select(x => x.Value)); } } // get profile data from Trips_User using (var tudb = new Trips4.Data.Models.TRIPS_UserEntities()) { var found = tudb.GetUserById(guid).FirstOrDefault(); if (found == null) { throw new Exception("User not found " + guid.ToString()); } Debug.Assert(guid == found.UserId.Value); person.profile.PersonGUID = found.UserId.Value; person.profile.FirstName = found.FirstName; person.profile.LastName = found.LastName; person.profile.Phone = found.PrimaryContact; person.profile.RecoveryEmail = found.LoweredEmail; // TODO: is this true? person.profile.UserName = found.UserName; } // get roles from RoleProvider if (loadRoles) { var roles = Roles.GetRolesForUser(person.profile.UserName); person.profile.Roles.AddRange(roles); } return person; }
public void CreateUserAndPerson(ShortProfile profile) { // the recovery email is required. if (string.IsNullOrWhiteSpace(profile.RecoveryEmail)) { throw new Exception("Recovery Email is required."); } // unique user name is required. Hint: use RecoveryEmail. if (string.IsNullOrWhiteSpace(profile.UserName)) { throw new Exception("UserName is required."); } // GUID must be, ummm, unique if (profile.PersonGUID.Equals(Guid.Empty)) { profile.PersonGUID = Guid.NewGuid(); } // use providers to create a user var password = "******"; MembershipCreateStatus membershipStatus; var muser = Membership.CreateUser(profile.UserName, password, profile.RecoveryEmail, "What is the answer to the ultimate question?", "42", true, profile.PersonGUID, out membershipStatus); if (membershipStatus != MembershipCreateStatus.Success) { throw new Exception("Membership Creation failed: " + membershipStatus.ToString()); } if (!Membership.ValidateUser(profile.UserName, password)) { Logger.Warn("Cannot validate user " + profile.UserName); } // save extra properties using (var db = new Trips4.Data.Models.TRIPS_UserEntities()) { // get the aspnet_User that was just created var user = db.aspnet_Users.Single(u => u.UserName == profile.UserName); SavePropertyValues(db, user, profile); db.SaveChanges(); } // give the new user roles //string[] roles = { "Contact Manager", "Contact", "Viewer", "SponsorRoleManager", "Administrator" }; string[] roles = { "Contact", "Viewer" }; Roles.AddUserToRoles(profile.UserName, roles); using (var tdb = new Trips4.Data.Models.TRIPSEntities()) { var pid = new ObjectParameter("PersonID", 0); tdb.CreatePerson(profile.PersonGUID, pid, profile.FirstName, profile.LastName, profile.SponsorCode); profile.PersonID = (int)pid.Value; } }