public LtiGenerateUserNameContext(HttpContext context, ILtiRequest ltiRequest) : base(context)
 {
     if (ltiRequest == null)
     {
         throw new ArgumentNullException("ltiRequest");
     }
     LtiRequest = ltiRequest;
 }
 public LtiAuthenticateContext(IOwinContext context, ILtiRequest ltiRequest) : base(context)
 {
     if (ltiRequest == null)
     {
         throw new ArgumentNullException("ltiRequest");
     }
     LtiRequest = ltiRequest;
 }
 public LtiAuthenticateContext(IOwinContext context, ILtiRequest ltiRequest) : base(context)
 {
     if (ltiRequest == null)
     {
         throw new ArgumentNullException("ltiRequest");
     }
     LtiRequest = ltiRequest;
 }
Example #4
0
 public LtiGenerateUserNameContext(IOwinContext context, ILtiRequest ltiRequest) : base(context)
 {
     if (ltiRequest == null)
     {
         throw new ArgumentNullException("ltiRequest");
     }
     LtiRequest = ltiRequest;
 }
Example #5
0
        public async Task <Person> ProcessLtiUser(ILtiRequest parsedRequest)
        {
            var user = await ctxManager.Context.People
                       .Include(s => s.Security)
                       .Include(s => s.Faculty)
                       .Include(s => s.Student)
                       .SingleOrDefaultAsync(person => person.BbUserId == parsedRequest.UserId);

            var emailChecker = new ValidEmailChecker();

            if (user != null)
            {
                if (user.Email.ToLower() != parsedRequest.LisPersonEmailPrimary.ToLower())
                {
                    if (!emailChecker.IsValidEmail(parsedRequest.LisPersonEmailPrimary))
                    {
                        throw new InvalidEmailException("The email address associated with your LMS account (" + parsedRequest.LisPersonEmailPrimary + ") is not a valid email address.");
                    }
                    if (!await UniqueEmailCheck(parsedRequest.LisPersonEmailPrimary))
                    {
                        throw new InvalidEmailException("The email address associated with your LMS account (" + parsedRequest.LisPersonEmailPrimary + ") is already being used in ECAT.");
                    }
                }
                user.ModifiedById = user.PersonId;
            }
            else
            {
                if (!emailChecker.IsValidEmail(parsedRequest.LisPersonEmailPrimary))
                {
                    throw new InvalidEmailException("The email address associated with your LMS account (" + parsedRequest.LisPersonEmailPrimary + ") is not a valid email address.");
                }
                if (!await UniqueEmailCheck(parsedRequest.LisPersonEmailPrimary))
                {
                    throw new InvalidEmailException("The email address associated with your LMS account (" + parsedRequest.LisPersonEmailPrimary + ") is already being used in ECAT.");
                }

                user = new Person
                {
                    IsActive             = true,
                    MpGender             = MpGender.Unk,
                    MpAffiliation        = MpAffiliation.Unk,
                    MpComponent          = MpComponent.Unk,
                    MpPaygrade           = MpPaygrade.Unk,
                    MpInstituteRole      = MpInstituteRoleId.Undefined,
                    RegistrationComplete = false
                };

                ctxManager.Context.People.Add(user);
            }

            var userIsCourseAdmin = false;

            switch (parsedRequest.Parameters["Roles"].ToLower())
            {
            case "instructor":
                userIsCourseAdmin    = true;
                user.MpInstituteRole = MpInstituteRoleId.Faculty;
                break;

            case "teachingassistant":
                user.MpInstituteRole = MpInstituteRoleId.Faculty;
                break;

            case "contentdeveloper":
                user.MpInstituteRole = MpInstituteRoleId.Designer;
                break;

            default:
                user.MpInstituteRole = MpInstituteRoleId.Student;
                break;
            }

            switch (user.MpInstituteRole)
            {
            case MpInstituteRoleId.Faculty:
                user.Faculty = user.Faculty ?? new ProfileFaculty();
                user.Faculty.IsCourseAdmin = userIsCourseAdmin;
                user.Faculty.AcademyId     = parsedRequest.Parameters["custom_ecat_school"];
                break;

            case MpInstituteRoleId.Designer:
                //user.Designer = user.Designer ?? new ProfileDesigner();
                //user.Designer.AssociatedAcademyId = parsedRequest.Parameters["custom_ecat_school"];
                break;

            default:
                user.Student = user.Student ?? new ProfileStudent();
                break;
            }

            user.IsActive     = true;
            user.Email        = parsedRequest.LisPersonEmailPrimary.ToLower();
            user.LastName     = parsedRequest.LisPersonNameFamily;
            user.FirstName    = parsedRequest.LisPersonNameGiven;
            user.BbUserId     = parsedRequest.UserId;
            user.ModifiedDate = DateTime.Now;

            if (await ctxManager.Context.SaveChangesAsync() > 0)
            {
                return(user);
            }

            throw new UserUpdateException("Save User Changes did not succeed!");
        }