public ActionResult SchoolRegistration(SchoolRegistrationInfo schoolRegistrationInfo)
        {
            if (schoolRegistrationInfo.Password == null || schoolRegistrationInfo.Password.Length < 8 || schoolRegistrationInfo.Password.Length > 32)
            {
                return(BadRequest(HttpResponseMessages.BadPassword));
            }
            if (dbUnit.UserAccountRepository.isExistByLogin(schoolRegistrationInfo.Login))
            {
                return(BadRequest(HttpResponseMessages.RegistrationUserExistByLogin));
            }
            if (dbUnit.UserAccountRepository.isExistByEmail(schoolRegistrationInfo.Email))
            {
                return(BadRequest(HttpResponseMessages.RegistrationUserExistByEmail));
            }
            if (!emailService.IsEmailValid(schoolRegistrationInfo.Email))
            {
                return(BadRequest(HttpResponseMessages.RegistrationUserBadEmail));
            }
            if (dbUnit.SchoolRepository.isExistByName(schoolRegistrationInfo.SchoolName))
            {
                return(BadRequest(HttpResponseMessages.RegistrationSchoolExistByName));
            }

            emailService.SendMessage(ApiConfig.Options.SchoolRegistration, schoolRegistrationInfo.Email, schoolRegistrationInfo);

            return(Ok(HttpResponseMessages.RegistrationSuccess));
        }
Example #2
0
        public object GetDataFromJwt(ApiConfig.Options options, string jwt)
        {
            object obj = null;

            switch (options)
            {
            case ApiConfig.Options.SchoolRegistration:
                obj = new SchoolRegistrationInfo(
                    jwtSecurityToken.Claims.First(claim => claim.Type == ApiConfig.ClaimTypeLogin).Value,
                    jwtSecurityToken.Claims.First(claim => claim.Type == ApiConfig.ClaimTypePassword).Value,
                    jwtSecurityToken.Claims.First(claim => claim.Type == ApiConfig.ClaimTypeUserEmail).Value,
                    jwtSecurityToken.Claims.First(claim => claim.Type == ApiConfig.ClaimTypeSchoolName).Value,
                    jwtSecurityToken.Claims.First(claim => claim.Type == ApiConfig.ClaimTypeSchoolLocation).Value,
                    jwtSecurityToken.Claims.First(claim => claim.Type == ApiConfig.ClaimTypeSchoolEmail).Value,
                    jwtSecurityToken.Claims.First(claim => claim.Type == ApiConfig.ClaimTypeSchoolNumber).Value
                    );
                break;

            case ApiConfig.Options.Restore:
                obj = new RestoreData(
                    jwtSecurityToken.Claims.First(claim => claim.Type == ApiConfig.ClaimTypeUserEmail).Value,
                    jwtSecurityToken.Claims.First(claim => claim.Type == ApiConfig.ClaimTypeUserNewPassword).Value,
                    jwtSecurityToken.Claims.First(claim => claim.Type == ApiConfig.ClaimTypeUserNewPassword).Value
                    );
                break;
            }

            return(obj);
        }
Example #3
0
        public string GetJwt(ApiConfig.Options options, object obj)
        {
            List <Claim> claims = null;

            switch (options)
            {
            case ApiConfig.Options.SchoolRegistration:
                SchoolRegistrationInfo regInfo = obj as SchoolRegistrationInfo;
                claims = new List <Claim>
                {
                    new Claim(ApiConfig.ClaimTypeLogin, regInfo.Login),
                    new Claim(ApiConfig.ClaimTypePassword, regInfo.Password),
                    new Claim(ApiConfig.ClaimTypeUserEmail, regInfo.Email),
                    new Claim(ApiConfig.ClaimTypeSchoolName, regInfo.SchoolName),
                    new Claim(ApiConfig.ClaimTypeSchoolLocation, regInfo.SchoolLocation),
                    new Claim(ApiConfig.ClaimTypeSchoolEmail, regInfo.SchoolEmail != null ? regInfo.SchoolEmail : ""),
                    new Claim(ApiConfig.ClaimTypeSchoolNumber, regInfo.SchoolNumber),
                };
                break;

            case ApiConfig.Options.Restore:
                RestoreData rd = obj as RestoreData;
                claims = new List <Claim>
                {
                    new Claim(ApiConfig.ClaimTypeUserEmail, rd.Email),
                    new Claim(ApiConfig.ClaimTypeUserNewPassword, rd.NewPassword)
                };
                break;

            default:
                break;
            }

            DateTime now = DateTime.UtcNow;

            jwtSecurityToken = new JwtSecurityToken(
                issuer: ApiConfig.ISSUER,
                audience: ApiConfig.AUDIENCE,
                notBefore: now,
                claims: claims,
                expires: now.Add(TimeSpan.FromMinutes(ApiConfig.LIFETIME)),
                signingCredentials: new SigningCredentials(ApiConfig.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256));

            return(jwtSecurityTokenHandler.WriteToken(jwtSecurityToken));
        }
        public ActionResult SchoolRegistrationConfirmation(string jwt)
        {
            ar = IsJwtValid(jwt);

            if (ar != null)
            {
                return(ar);
            }

            SchoolRegistrationInfo registrationInfo = jwtService.GetDataFromJwt(ApiConfig.Options.SchoolRegistration, jwt) as SchoolRegistrationInfo;

            dbUnit.UserAccountRepository.Add(registrationInfo.Login, registrationInfo.Password, registrationInfo.Email, ApiConfig.ROLE_ADMIN);
            dbUnit.Complete();

            UserAccount userAccount = dbUnit.UserAccountRepository.FindByCredential(registrationInfo.Login, registrationInfo.Password);

            dbUnit.SchoolRepository.Add(registrationInfo.SchoolName, registrationInfo.SchoolLocation, registrationInfo.Email, registrationInfo.SchoolNumber, userAccount.Id);
            dbUnit.Complete();

            return(Ok());
        }