Ejemplo n.º 1
0
        public async Task <ResponseModel <UserModel> > VerifyContactAsync(Guid userId, ContactMethodType method, string userSubmittedVerificationCode)
        {
            var rs = await this.QueryUser(userId, IncludeOptions.Entities);

            if (rs.Code == ResponseCode.NoData)
            {
                return(ResponseModel <UserModel> .Error(ResponseCode.InvalidCredentials));
            }
            if (rs.Code != ResponseCode.Ok)
            {
                return(ResponseModel <UserModel> .Error(rs.Code, rs.Message));
            }

            UserComposite composite = rs.Data[0];

            switch (method)
            {
            case ContactMethodType.Email:
                if (composite.User.EmailVerification == null)
                {
                    break;
                }
                else if (composite.User.EmailVerification.ExpiresAt < DateTime.UtcNow)
                {
                    return(ResponseModel <UserModel> .Error(ResponseCode.EmailVerificationCodeExpired));
                }
                else if (composite.User.EmailVerification.Code != userSubmittedVerificationCode)
                {
                    return(ResponseModel <UserModel> .Error(ResponseCode.InvalidEmailVerificationCode));
                }
                else
                {
                    composite.UserEntity.User.Verified(method);
                    // update the entity
                    // send it back to table storage with the updates
                    var rsUpdate = await this.UpdateEntity <UserEntity>(composite.UserEntity);
                }
                break;

            default:
                break;
            }

            return(ResponseModel <UserModel> .Success(composite.UserEntity.User));
        }
Ejemplo n.º 2
0
        public async Task <ResponseModel <UserComposite> > QueryUser(Guid userId, IncludeOptions options = IncludeOptions.None)
        {
            TableQuery <UserEntity> query = new TableQuery <UserEntity>().Where(UserEntity.QueryKey(userId));
            var rs = await QueryEntities <UserEntity>(query);

            if (rs.Code != ResponseCode.Ok)
            {
                return(ResponseModel <UserComposite> .Error(rs.Code, rs.Message));
            }
            UserComposite c = new UserComposite(userId);

            c.User = rs.Data[0].User;
            if ((options & IncludeOptions.Entities) == IncludeOptions.Entities)
            {
                c.UserEntity = rs.Data[0];
            }
            return(ResponseModel <UserComposite> .Success(c));
        }