首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用寄存的comunitiesvf 实现验证 验证通过之后才可进入community home 画面

使用寄存的comunitiesvf 实现验证 验证通过之后才可进入community home 画面

原创
作者头像
Merry he
发布2025-05-29 13:44:49
发布2025-05-29 13:44:49
5900
代码可运行
举报
运行总次数:0
代码可运行

基于https://cloud.tencent.com/developer/beta/article/2279332?areaSource=105001.4&traceId=tjOZERRknxstppV1x52cV文章

https://cloud.tencent.com/developer/beta/article/2284935?areaSource=105001.1&traceId=hSCGH_TS9rYHsG-5dbkCz

guest user 无法获取sessionid,所以用lwc的话 切换tab需要重新输入再验证


1. 采用修改寄存的 CommunitiesLoginController和CommunitiesLoginVF

STEUP1: CommunitiesLoginController

代码语言:context
复制
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:

代码语言:context
复制
 <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:权限加上

访问即可。

2. guset user 不能使用site.login

代码语言:javascript
代码运行次数:0
运行
复制
   pageRef = Site.Login('libtest@00d0o000000r4s7eak.org.force.com','',startUrl);

Salesforce Sites guest user characteristics

https://help.salesforce.com/s/articleView?language=en_US&id=000385602&type=1

添加描述

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 采用修改寄存的 CommunitiesLoginController和CommunitiesLoginVF
  • 2. guset user 不能使用site.login
    • Salesforce Sites guest user characteristics
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档