Example #1
0
        protected async Task <UserEntity> GetOrCreateUserAsync(AuthenticatedUser authenticatedUser)
        {
            var user = await _context.GetAsync <UserEntity>(TableNames.Users,
                                                            authenticatedUser.UserIdentifier, authenticatedUser.ProviderIdentifier);

            if (user == null)
            {
                _log.BaseHandlerCreateNewUser();

                var userID     = Guid.NewGuid().ToString("D");
                var userEntity = new UserEntity
                {
                    PartitionKey = authenticatedUser.UserIdentifier,
                    RowKey       = authenticatedUser.ProviderIdentifier,
                    Name         = authenticatedUser.Name,
                    UserID       = userID,
                    Created      = DateTime.UtcNow,
                    Enabled      = true
                };

                await _context.UpsertAsync(TableNames.Users, userEntity);

                var userID2UserEntity = new UserID2UserEntity
                {
                    PartitionKey   = userID,
                    RowKey         = userID,
                    UserPrimaryKey = userEntity.PartitionKey,
                    UserRowKey     = userEntity.RowKey
                };

                await _context.UpsertAsync(TableNames.UserID2User, userID2UserEntity);

                _log.BaseHandlerNewUserCreated(userID);

                return(userEntity);
            }
            else
            {
                _log.BaseHandlerExistingUserFound(user.UserID);
                return(user);
            }
        }