Ejemplo n.º 1
0
        /// <summary>
        /// Validates wether given key is valid. If not throws status code exception bad request. If is valid returns userid
        /// </summary>
        /// <param name="key"></param>
        /// <param name="verificationType"></param>
        /// <returns>User id</returns>
        public async Task <User> ValidateVerificationKey(string key, UserVerificationType verificationType)
        {
            var decodedKey            = HttpUtility.UrlDecode(key);
            var userVerificationModel = _encryptionService.DecryptModel <UserVerificationModel>(decodedKey);

            var user = await _entityRepository.GetEntity <User>(x => x.Id == userVerificationModel.UserId);

            if (user == null)
            {
                throw new StatusCodeException(HttpStatusCode.BadRequest);
            }
            if (_dateTimeProvider.Now > userVerificationModel.ExpirationDate)
            {
                throw new StatusCodeException(HttpStatusCode.BadRequest);
            }
            if (userVerificationModel.UserVerificationType != verificationType)
            {
                throw new StatusCodeException(HttpStatusCode.BadRequest);
            }

            return(user);
        }