This is my code.But am getting an error i.e
FATAL_ERROR|System.TypeException: That operation is only allowed from within an active site. Class.System.Site.createPortalUser.
Please correct my error
@RestResource(urlMapping='/insertP/*')
global with sharing class portalcreatenew
{
@HttpPost
global static string newportalcreation()
{
RestRequest req=RestContext.request;
// req.addParameter('userId',userId);
RestResponse res=RestContext.response;
// req.addParameter('userId',userId);
Blob Body = req.requestBody;
Wrapperclss reg = portalcreatenew.parse(Body.tostring());
//system.debug('InputParsed::'+reg.Wrapper2);
// system.debug('InputRequest::'+Body.tostring());
Wrapperclss container = (Wrapperclss)System.JSON.deserialize(RestContext.request.requestBody.tostring(),Wrapperclss.class);
User thisUser = [select Id from User where Id = :UserInfo.getUserId()];
ID ProfileId = [Select id from Profile where name = 'Customer Portal Manager Custom'].id;
Account A1 = new Account(Name = 'Test Acct', OwnerId=thisUser.Id );
insert A1;
Contact C1 = new Contact( AccountID = A1.id, firstName = 'TestTest', lastName = 'UserUser',email = 'harish.cherry484@gmail.com');
insert C1;
User newUser = new User();
newUser.Username = reg.Username;
// newUser.LastName = C1.lastname;
newUser.LastName = reg.Lastname;
newUser.Email = reg.Email;
//newUser.password = reg.password;
newUser.Alias = reg.Alias;
newUser.CommunityNickName = reg.CommunityNickName;
newUser.TimeZoneSidKey = reg.TimeZoneSidKey;
newUser.LocaleSidKey = reg.LocaleSidKey;
newUser.EmailEncodingKey = reg.EmailEncodingKey;
newUser.ProfileId = ProfileId;
newUser.LanguageLocaleKey = reg.LanguageLocaleKey;
newUser.ContactId = C1.id;
string userId = Site.createPortalUser(newUser, A1.id, 'harish.8392', true);
insert newUser;
return 'User Created! Id Is: ' + newUser.Id;
}
public static Wrapperclss parse(string reg)
{
return(Wrapperclss)System.json.deserialize(reg,Wrapperclss.class);
}
global class Wrapperclss
{
public String Username{get;set;}
public String LastName{get;set;}
public String Email{get;set;}
public String password{get; set {password = value == null ? value : value.trim(); } }
public String confirmPassword {get; set { confirmPassword = value == null ? value : value.trim(); } }
public String Alias{get;set;}
public String CommunityNickName{get;set;}
public String TimeZoneSidKey{get;set;}
public String LocaleSidKey{get;set;}
public String EmailEncodingKey{get;set;}
public String ProfileId{get;set;}
public String LanguageLocaleKey{get;set;}
public String ContactId{get;set;}
}
}
Createportaluser
will not work, when you directly open the VF page in your salesforce org session.