public async Task <IHttpActionResult> Active(NoncePairDto pendingSession) { if (ModelState.IsValid) { var session = await db .Sessions .Where(QueryHelper.GetPendingSessionQuery(pendingSession)) .SingleOrDefaultAsync(); if (session == null) { return(NotFound()); //Wrong Nonce Entered } session.User.State = UserState.ACTIVE; session.User.UpdatedAt = DateTime.Now; session.ActivationMoment = DateTime.Now; session.State = SessionState.ACTIVE; //We add the registered phone number to user's validated phone number. if (session.User.PhoneNumber != null) { var newValidator = new UserPhoneNumberValidator() { UserId = session.User.Id, TargetNumber = session.User.PhoneNumber, SecurityToken = HasherHelper.sha256_hash(pendingSession.Nonce.ToString()), IsValidated = true, CreatedAt = DateTime.Now, ValidatedAt = DateTime.Now }; db.UserPhoneNumberValidators.Add(newValidator); } await db.SaveChangesAsync(); SessionInfoObject sessionInfo = new SessionInfoObject() { SessionKey = session.SessionKey, SessionId = session.Id }; return(Ok(sessionInfo)); } return(BadRequest()); }
public async Task <IHttpActionResult> Create(PhoneNumberValidatorDto phoneNumberValidatorDto) { if (ModelState.IsValid) { var session = await db.Sessions.SingleOrDefaultAsync( QueryHelper.GetSessionObjectValidationQuery(phoneNumberValidatorDto.Session)); if (session != null) { var smsSent = true; int nonce = RandomHelper.RandomInt(10000, 99999); var validator = new UserPhoneNumberValidator() { UserId = session.User.Id, TargetNumber = phoneNumberValidatorDto.PhoneNumber, SecurityToken = HasherHelper.sha256_hash(nonce.ToString()), IsValidated = false, CreatedAt = DateTime.Now }; db.UserPhoneNumberValidators.Add(validator); await db.SaveChangesAsync(); if (MessageHelper.SendSMS_K(nonce.ToString(), phoneNumberValidatorDto.PhoneNumber, MessageHelper.SMSMode.VERIFICATION) != null) { smsSent = false; } return(Ok()); } return(Unauthorized()); } return(BadRequest()); }