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)); }
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); }
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()); }