示例#1
0
        // 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);
            }
        }
示例#2
0
        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;
        }
示例#3
0
        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;
            }
        }