mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 10:02:05 +00:00
⚡ Minor improvements zu Salesforce-Node
This commit is contained in:
@@ -13,15 +13,25 @@ export const contactOperations = [
|
||||
},
|
||||
},
|
||||
options: [
|
||||
{
|
||||
name: 'Add Lead To Campaign',
|
||||
value: 'addToCampaign',
|
||||
description: 'Add lead to a campaign',
|
||||
},
|
||||
{
|
||||
name: 'Add Note',
|
||||
value: 'addNote',
|
||||
description: 'Add note to a contact',
|
||||
},
|
||||
{
|
||||
name: 'Create',
|
||||
value: 'create',
|
||||
description: 'Create a contact',
|
||||
},
|
||||
{
|
||||
name: 'Update',
|
||||
value: 'update',
|
||||
description: 'Update a contact',
|
||||
name: 'Delete',
|
||||
value: 'delete',
|
||||
description: 'Delete a contact',
|
||||
},
|
||||
{
|
||||
name: 'Get',
|
||||
@@ -39,19 +49,9 @@ export const contactOperations = [
|
||||
description: 'Get all contacts',
|
||||
},
|
||||
{
|
||||
name: 'Delete',
|
||||
value: 'delete',
|
||||
description: 'Delete a contact',
|
||||
},
|
||||
{
|
||||
name: 'Add Lead To Campaign',
|
||||
value: 'addToCampaign',
|
||||
description: 'Add lead to a campaign',
|
||||
},
|
||||
{
|
||||
name: 'Add Note',
|
||||
value: 'addNote',
|
||||
description: 'Add note to a contact',
|
||||
name: 'Update',
|
||||
value: 'update',
|
||||
description: 'Update a contact',
|
||||
},
|
||||
],
|
||||
default: 'create',
|
||||
@@ -99,52 +99,6 @@ export const contactFields = [
|
||||
},
|
||||
},
|
||||
options: [
|
||||
{
|
||||
displayName: 'Fax',
|
||||
name: 'fax',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Fax number for the contact. Label is Business Fax.',
|
||||
},
|
||||
{
|
||||
displayName: 'Email',
|
||||
name: 'email',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Email address for the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Phone',
|
||||
name: 'phone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Phone number for the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Title',
|
||||
name: 'title',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Title of the contact such as CEO or Vice President.',
|
||||
},
|
||||
{
|
||||
displayName: 'Jigsaw',
|
||||
name: 'jigsaw',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: `references the ID of a contact in Data.com.
|
||||
If a contact has a value in this field, it means that a contact was imported as a contact from Data.com.`,
|
||||
},
|
||||
{
|
||||
displayName: 'Owner',
|
||||
name: 'owner',
|
||||
type: 'options',
|
||||
typeOptions: {
|
||||
loadOptionsMethod: 'getUsers',
|
||||
},
|
||||
default: '',
|
||||
description: 'The owner of the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Account',
|
||||
name: 'acconuntId',
|
||||
@@ -156,11 +110,67 @@ export const contactFields = [
|
||||
description: 'ID of the account that is the parent of this contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Birthdate',
|
||||
name: 'birthdate',
|
||||
displayName: 'Assistant Name',
|
||||
name: 'assistantName',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The birthdate of the contact.',
|
||||
description: 'The name of the assistant.',
|
||||
},
|
||||
{
|
||||
displayName: 'Assistant Phone',
|
||||
name: 'Assistant Phone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The telephone number of the assistant.',
|
||||
},
|
||||
{
|
||||
displayName: 'Birth Date',
|
||||
name: 'birthdate',
|
||||
type: 'dateTime',
|
||||
default: '',
|
||||
description: 'The birth date of the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Department',
|
||||
name: 'department',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The department of the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Description',
|
||||
name: 'description',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'A description of the contact. Label is Contact Description. Limit: 32 KB.',
|
||||
},
|
||||
{
|
||||
displayName: 'Email',
|
||||
name: 'email',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Email address for the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Email Bounced Date',
|
||||
name: 'otherPostalCode',
|
||||
type: 'dateTime',
|
||||
default: '',
|
||||
description: 'If bounce management is activated and an email sent to the contact bounces, the date and time the bounce occurred.',
|
||||
},
|
||||
{
|
||||
displayName: 'Email Bounced Reason',
|
||||
name: 'emailBouncedReason',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'If bounce management is activated and an email sent to the contact bounces, the reason the bounce occurred.',
|
||||
},
|
||||
{
|
||||
displayName: 'Fax',
|
||||
name: 'fax',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Fax number for the contact. Label is Business Fax.',
|
||||
},
|
||||
{
|
||||
displayName: 'First Name',
|
||||
@@ -177,17 +187,12 @@ export const contactFields = [
|
||||
description: 'Home telephone number for the contact',
|
||||
},
|
||||
{
|
||||
displayName: 'Other City',
|
||||
name: 'otherCity',
|
||||
displayName: 'Jigsaw',
|
||||
name: 'jigsaw',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Department',
|
||||
name: 'department',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The department of the contact.',
|
||||
description: `references the ID of a contact in Data.com.
|
||||
If a contact has a value in this field, it means that a contact was imported as a contact from Data.com.`,
|
||||
},
|
||||
{
|
||||
displayName: 'Lead Source',
|
||||
@@ -199,39 +204,18 @@ export const contactFields = [
|
||||
default: '',
|
||||
description: 'Source from which the lead was obtained.',
|
||||
},
|
||||
{
|
||||
displayName: 'Other Phone',
|
||||
name: 'otherPhone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Telephone for alternate address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Other State',
|
||||
name: 'otherState',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Salutation',
|
||||
name: 'salutation',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Honorific abbreviation, word, or phrase to be used in front of name in greetings, such as Dr. or Mrs.',
|
||||
},
|
||||
{
|
||||
displayName: 'Description',
|
||||
name: 'description',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'A description of the contact. Label is Contact Description. Limit: 32 KB.',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing City',
|
||||
name: 'mailingCity',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing Country',
|
||||
name: 'mailingCountry',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Mobile Phone',
|
||||
name: 'mobilePhone',
|
||||
@@ -240,11 +224,10 @@ export const contactFields = [
|
||||
description: `Contact’s mobile phone number.`,
|
||||
},
|
||||
{
|
||||
displayName: 'Other Street',
|
||||
name: 'otherStreet',
|
||||
displayName: 'Mailing Postal Code',
|
||||
name: 'mailingPostalCode',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Street for alternate address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing State',
|
||||
@@ -252,6 +235,19 @@ export const contactFields = [
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing Street',
|
||||
name: 'mailingStreet',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Street address for mailing address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Other City',
|
||||
name: 'otherCity',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Other Country',
|
||||
name: 'otherCountry',
|
||||
@@ -259,31 +255,11 @@ export const contactFields = [
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Assistant Name',
|
||||
name: 'assistantName',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The name of the assistant.',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing Street',
|
||||
name: 'mailingStreet',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Street address for mailing address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Assistant Phone',
|
||||
name: 'Assistant Phone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The telephone number of the assistant.',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing Country',
|
||||
name: 'mailingCountry',
|
||||
displayName: 'Other Phone',
|
||||
name: 'otherPhone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Telephone for alternate address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Other Postal Code',
|
||||
@@ -292,24 +268,48 @@ export const contactFields = [
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Email Bounced Date',
|
||||
name: 'otherPostalCode',
|
||||
type: 'dateTime',
|
||||
default: '',
|
||||
description: 'If bounce management is activated and an email sent to the contact bounces, the date and time the bounce occurred.',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing Postal Code',
|
||||
name: 'mailingPostalCode',
|
||||
displayName: 'Other State',
|
||||
name: 'otherState',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Email Bounced Reason',
|
||||
name: 'emailBouncedReason',
|
||||
displayName: 'Other Street',
|
||||
name: 'otherStreet',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'If bounce management is activated and an email sent to the contact bounces, the reason the bounce occurred.',
|
||||
description: 'Street for alternate address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Owner',
|
||||
name: 'owner',
|
||||
type: 'options',
|
||||
typeOptions: {
|
||||
loadOptionsMethod: 'getUsers',
|
||||
},
|
||||
default: '',
|
||||
description: 'The owner of the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Phone',
|
||||
name: 'phone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Phone number for the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Title',
|
||||
name: 'title',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Title of the contact such as CEO or Vice President.',
|
||||
},
|
||||
{
|
||||
displayName: 'Salutation',
|
||||
name: 'salutation',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Honorific abbreviation, word, or phrase to be used in front of name in greetings, such as Dr. or Mrs.',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -351,52 +351,6 @@ export const contactFields = [
|
||||
},
|
||||
},
|
||||
options: [
|
||||
{
|
||||
displayName: 'Fax',
|
||||
name: 'fax',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Fax number for the contact. Label is Business Fax.',
|
||||
},
|
||||
{
|
||||
displayName: 'Email',
|
||||
name: 'email',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Email address for the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Phone',
|
||||
name: 'phone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Phone number for the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Title',
|
||||
name: 'title',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Title of the contact such as CEO or Vice President.',
|
||||
},
|
||||
{
|
||||
displayName: 'Jigsaw',
|
||||
name: 'jigsaw',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: `references the ID of a contact in Data.com.
|
||||
If a contact has a value in this field, it means that a contact was imported as a contact from Data.com.`,
|
||||
},
|
||||
{
|
||||
displayName: 'Owner',
|
||||
name: 'owner',
|
||||
type: 'options',
|
||||
typeOptions: {
|
||||
loadOptionsMethod: 'getUsers',
|
||||
},
|
||||
default: '',
|
||||
description: 'The owner of the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Account',
|
||||
name: 'acconuntId',
|
||||
@@ -408,11 +362,67 @@ export const contactFields = [
|
||||
description: 'ID of the account that is the parent of this contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Birthdate',
|
||||
name: 'birthdate',
|
||||
displayName: 'Assistant Name',
|
||||
name: 'assistantName',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The birthdate of the contact.',
|
||||
description: 'The name of the assistant.',
|
||||
},
|
||||
{
|
||||
displayName: 'Assistant Phone',
|
||||
name: 'Assistant Phone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The telephone number of the assistant.',
|
||||
},
|
||||
{
|
||||
displayName: 'Birth Date',
|
||||
name: 'birthdate',
|
||||
type: 'dateTime',
|
||||
default: '',
|
||||
description: 'The birth date of the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Department',
|
||||
name: 'department',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The department of the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Description',
|
||||
name: 'description',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'A description of the contact. Label is Contact Description. Limit: 32 KB.',
|
||||
},
|
||||
{
|
||||
displayName: 'Email',
|
||||
name: 'email',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Email address for the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Email Bounced Date',
|
||||
name: 'emailBouncedDate',
|
||||
type: 'dateTime',
|
||||
default: '',
|
||||
description: 'If bounce management is activated and an email sent to the contact bounces, the date and time the bounce occurred.',
|
||||
},
|
||||
{
|
||||
displayName: 'Email Bounced Reason',
|
||||
name: 'emailBouncedReason',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'If bounce management is activated and an email sent to the contact bounces, the reason the bounce occurred.',
|
||||
},
|
||||
{
|
||||
displayName: 'Fax',
|
||||
name: 'fax',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Fax number for the contact. Label is Business Fax.',
|
||||
},
|
||||
{
|
||||
displayName: 'First Name',
|
||||
@@ -429,17 +439,12 @@ export const contactFields = [
|
||||
description: 'Home telephone number for the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Other City',
|
||||
name: 'otherCity',
|
||||
displayName: 'Jigsaw',
|
||||
name: 'jigsaw',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Department',
|
||||
name: 'department',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The department of the contact.',
|
||||
description: `references the ID of a contact in Data.com.
|
||||
If a contact has a value in this field, it means that a contact was imported as a contact from Data.com.`,
|
||||
},
|
||||
{
|
||||
displayName: 'Lead Source',
|
||||
@@ -451,39 +456,37 @@ export const contactFields = [
|
||||
default: '',
|
||||
description: 'Source from which the lead was obtained.',
|
||||
},
|
||||
{
|
||||
displayName: 'Other Phone',
|
||||
name: 'otherPhone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Telephone for alternate address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Other State',
|
||||
name: 'otherState',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Salutation',
|
||||
name: 'salutation',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Honorific abbreviation, word, or phrase to be used in front of name in greetings, such as Dr. or Mrs.',
|
||||
},
|
||||
{
|
||||
displayName: 'Description',
|
||||
name: 'description',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'A description of the contact. Label is Contact Description. Limit: 32 KB.',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing City',
|
||||
name: 'mailingCity',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing Country',
|
||||
name: 'mailingCountry',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing State',
|
||||
name: 'mailingState',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing Street',
|
||||
name: 'mailingStreet',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Street address for mailing address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing Postal Code',
|
||||
name: 'mailingPostalCode',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Mobile Phone',
|
||||
name: 'mobilePhone',
|
||||
@@ -492,15 +495,8 @@ export const contactFields = [
|
||||
description: `Contact’s mobile phone number.`,
|
||||
},
|
||||
{
|
||||
displayName: 'Other Street',
|
||||
name: 'otherStreet',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Street for alternate address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing State',
|
||||
name: 'mailingState',
|
||||
displayName: 'Other City',
|
||||
name: 'otherCity',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
@@ -511,31 +507,11 @@ export const contactFields = [
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Assistant Name',
|
||||
name: 'assistantName',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The name of the assistant.',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing Street',
|
||||
name: 'mailingStreet',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Street address for mailing address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Assistant Phone',
|
||||
name: 'Assistant Phone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'The telephone number of the assistant.',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing Country',
|
||||
name: 'mailingCountry',
|
||||
displayName: 'Other Phone',
|
||||
name: 'otherPhone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Telephone for alternate address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Other Postal Code',
|
||||
@@ -544,24 +520,48 @@ export const contactFields = [
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Email Bounced Date',
|
||||
name: 'emailBouncedDate',
|
||||
type: 'dateTime',
|
||||
default: '',
|
||||
description: 'If bounce management is activated and an email sent to the contact bounces, the date and time the bounce occurred.',
|
||||
},
|
||||
{
|
||||
displayName: 'Mailing Postal Code',
|
||||
name: 'mailingPostalCode',
|
||||
displayName: 'Other State',
|
||||
name: 'otherState',
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'Email Bounced Reason',
|
||||
name: 'emailBouncedReason',
|
||||
displayName: 'Other Street',
|
||||
name: 'otherStreet',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'If bounce management is activated and an email sent to the contact bounces, the reason the bounce occurred.',
|
||||
description: 'Street for alternate address.',
|
||||
},
|
||||
{
|
||||
displayName: 'Owner',
|
||||
name: 'owner',
|
||||
type: 'options',
|
||||
typeOptions: {
|
||||
loadOptionsMethod: 'getUsers',
|
||||
},
|
||||
default: '',
|
||||
description: 'The owner of the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Phone',
|
||||
name: 'phone',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Phone number for the contact.',
|
||||
},
|
||||
{
|
||||
displayName: 'Salutation',
|
||||
name: 'salutation',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Honorific abbreviation, word, or phrase to be used in front of name in greetings, such as Dr. or Mrs.',
|
||||
},
|
||||
{
|
||||
displayName: 'Title',
|
||||
name: 'title',
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Title of the contact such as CEO or Vice President.',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -813,6 +813,13 @@ export const contactFields = [
|
||||
},
|
||||
description: 'Body of the note. Limited to 32 KB.',
|
||||
},
|
||||
{
|
||||
displayName: 'Is Private',
|
||||
name: 'isPrivate',
|
||||
type: 'boolean',
|
||||
default: false,
|
||||
description: 'If true, only the note owner or a user with the “Modify All Data” permission can view the note or query it via the API',
|
||||
},
|
||||
{
|
||||
displayName: 'Owner',
|
||||
name: 'owner',
|
||||
@@ -823,13 +830,6 @@ export const contactFields = [
|
||||
default: '',
|
||||
description: 'ID of the user who owns the note.',
|
||||
},
|
||||
{
|
||||
displayName: 'Is Private',
|
||||
name: 'isPrivate',
|
||||
type: 'boolean',
|
||||
default: false,
|
||||
description: 'If true, only the note owner or a user with the “Modify All Data” permission can view the note or query it via the API',
|
||||
},
|
||||
]
|
||||
},
|
||||
] as INodeProperties[];
|
||||
|
||||
Reference in New Issue
Block a user