guest user 无法获取sessionid,所以用lwc的话 切换tab需要重新输入再验证
STEUP1: CommunitiesLoginController
global without sharing class CommunitiesLoginController {
public Boolean showSection1{get;set;}
public Boolean showSection2{get;set;}
public string emailValue {get;set;}
public string authcodevalue {get;set;}
global CommunitiesLoginController () {
showSection1= true;
showSection2= false;
}
// mail verify
public void submitVerifyMail() {
System.debug('>>>>>>>>>>>>>-------234'+emailValue);
// email format validate
if (!validateEmail(emailValue)) {
ApexPages.Message msg = new ApexPages.Message(ApexPages.Severity.Error, 'this mail is required and also fromat is correct,please re-input!');
ApexPages.addMessage(msg);
} else {
List<AccessUserlist__c> accessUserlist = [SELECT email__c,authCode__c FROM AccessUserlist__c WHERE email__c = :emailValue LIMIT 1];
System.debug('111accessUserlist'+accessUserlist.size());
// if email is validate
if (accessUserlist.size() > 0) {
// send email.
String authCode = RandomNumber.generateRandomNumber(8);
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setSubject('Vefiry Code');
mail.setHtmlBody('Vefiry Code is: ' + authCode);
string[] toaddress = New String[] {emailValue};
mail.setToAddresses(toaddress);
mail.setSaveAsActivity( false );
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
// update record
System.debug('-----startupdate');
accessUserlist.get(0).authCode__c = authCode;
System.debug('-----authCode' +authCode);
update accessUserlist;
showSection1= false;
showSection2= true;
} else {
ApexPages.Message msg = new ApexPages.Message(ApexPages.Severity.Error, 'this mail is invalidate,please connect with adminuser.');
ApexPages.addMessage(msg);
}
}
}
// code verify
public PageReference submitVerifyAuthcode() {
System.debug('Start---authCode--'+authcodevalue);
if (!authcodevalue.isNumeric()) {
ApexPages.Message msg = new ApexPages.Message(ApexPages.Severity.Error, 'this authcode need input any number,please re-input!');
ApexPages.addMessage(msg);
return null;
} else {
List<AccessUserlist__c> accessUserlist = [SELECT email__c,authCode__c FROM AccessUserlist__c WHERE authCode__c = :authcodevalue LIMIT 1];
System.debug('authCode'+accessUserlist);
if (accessUserlist.size() > 0) {
PageReference pageRef = new PageReference('http://www.baidu.com');
String startUrl = Site.getPathPrefix();
pageRef = Site.Login('XXX','XXXX',startUrl); -----(暂时用admin user)
return pageRef;
} else {
ApexPages.Message msg = new ApexPages.Message(ApexPages.Severity.Error, 'this authcode is invalidate,please connect with adminuser.');
ApexPages.addMessage(msg);
return null;
}
}
}
// mail format check
public static Boolean validateEmail(String email) {
Boolean res = true;
String emailRegex = '^[a-zA-Z0-9._|\\\\%#~`=?&/$^*!}{+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$'; // source: http://www.regular-expressions.info/email.html
Pattern MyPattern = Pattern.compile(emailRegex);
Matcher MyMatcher = MyPattern.matcher(email);
if (!MyMatcher.matches())
res = false;
return res;
}
}
VF PAGE:
<apex:page controller="CommunitiesLoginController">
<apex:form >
<apex:pageBlock id="block">
<apex:pageMessages id="block"></apex:pageMessages>
<apex:pageBlockSection title="please input your email: " rendered="{!showSection1}" columns="4">
<apex:inputText value="{!emailValue}" style="width:260px"/>
<apex:commandButton action="{!submitVerifyMail}" value="Verify" reRender="block" />
</apex:pageBlockSection>
<apex:pageBlockSection title="please input your authCode: " rendered="{!showSection2}" columns="4">
<apex:inputText value="{!authcodevalue}" style="width:260px"/>
<apex:commandButton action="{!submitVerifyAuthcode}" value="Submit" reRender="block"/>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
SETP2:
SETP3:权限加上
访问即可。
pageRef = Site.Login('libtest@00d0o000000r4s7eak.org.force.com','',startUrl);
https://help.salesforce.com/s/articleView?language=en_US&id=000385602&type=1
添加描述
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。