首页 > 其他分享 >orchard core 2 的user模块,添加phonenumber手机号的liquid支持

orchard core 2 的user模块,添加phonenumber手机号的liquid支持

时间:2024-10-28 10:19:55浏览次数:8  
标签:core nameof orchard liquid PhoneNumber User StringValue new user

老外习惯用email,我们要求的是要手机号。
所以除了采用二次验证(2FA),发现工作流要给用户发送通知短信无法获取对应的手机号。所以对源码进行扩展 增加了liquid获取手机号。
1、下载源码可以clone 也可以下载
2、找到对应modules的user模块
直接在starup.cs 找到 LiquidStartup 添加显示phonenumer

添加一行
nameof(User.PhoneNumber)=> new StringValue(user.PhoneNumber),
o.MemberAccessStrategy.Register<User, FluidValue>((user, name, context) => { return name switch { nameof(User.UserId) => new StringValue(user.UserId), nameof(User.UserName) => new StringValue(user.UserName), nameof(User.NormalizedUserName) => new StringValue(user.NormalizedUserName), nameof(User.Email) => new StringValue(user.Email), nameof(User.NormalizedEmail) => new StringValue(user.NormalizedEmail), nameof(User.EmailConfirmed) => user.EmailConfirmed ? BooleanValue.True : BooleanValue.False, nameof(User.IsEnabled) => user.IsEnabled ? BooleanValue.True : BooleanValue.False, nameof(User.RoleNames) => new ArrayValue(user.RoleNames.Select(x => new StringValue(x)).ToArray()), nameof(User.PhoneNumber)=> new StringValue(user.PhoneNumber), nameof(User.Properties) => new ObjectValue(user.Properties), _ => NilValue.Instance }; });

要是想像email类似的方法调用 就添加一个filter ,位置在 liquid文件夹,
上代码:

`
public class UserPhoneNumberFilter : ILiquidFilter
{
private readonly UserManager _userManager;
private readonly IHttpContextAccessor _httpContextAccessor;

public UserPhoneNumberFilter(UserManager<IUser> userManager, IHttpContextAccessor httpContextAccessor)
{
    _userManager = userManager;
    _httpContextAccessor = httpContextAccessor;
}

public async ValueTask<FluidValue> ProcessAsync(FluidValue input, FilterArguments args, LiquidTemplateContext ctx)
{
    var value = input.ToObjectValue();
    if (value is LiquidUserAccessor)
    {
        var claimsPrincipal = _httpContextAccessor.HttpContext?.User;
        if (claimsPrincipal != null)
        {
            var phoneNumber = claimsPrincipal.FindFirstValue(ClaimTypes.MobilePhone);
            if (phoneNumber != null)
            {
                return FluidValue.Create(phoneNumber, ctx.Options);
            }
        }
    }

    if (value is IUser user)
    {
        return FluidValue.Create(await _userManager.GetPhoneNumberAsync(user), ctx.Options);
    }

    return NilValue.Instance;
}

}`

liquid写法:
{% assign user = User | user_id | users_by_id %} {{ user.PhoneNumber}}
效果如下:

标签:core,nameof,orchard,liquid,PhoneNumber,User,StringValue,new,user
From: https://www.cnblogs.com/zxs-onestar/p/18509843

相关文章

  • 在 HarmonyOS Next 中使用 Core File Kit 管理应用文件
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的文件管理技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在应用开发中,文件的创建、读......
  • [rCore学习笔记 031] SV39多级页表的硬件机制
    看到这个题目就知道上一节提到的RISC-V手册的10.6节又有用武之地了.这里只需注意,RV32的分页方案Sv32支持4GiB的虚址空间,RV64支持多种分页方案,但我们只介绍最受欢迎的一种,Sv39。:RISC-V的分页方案以SvX的模式命名,其中X是以位为单位的虚拟地址的长度。虚拟地址和物理地址......
  • 适用于 Visual Studio 的 SDK 下载 .NetCore,NET Standard,Framework各个版本
     微软官方下载地址:https://dotnet.microsoft.com/zh-cn/download/visual-studio-sdks?cid=getdotnetsdk 以下适用于VisualStudio的.NET的各种SDK。有关更多选项,请访问下载页面。.NET/.NETCore.NET是一个免费的、跨平台的、开源开发人员平台,用于构建许多不同类型的应......
  • dotnet core微服务框架Jimu介绍
    jimu是一个基于.Net6.0简单易用的微服务框架,参考了很多开源库以及想法,使用了大量的开源库(如DotNetty,consul.net,Flurl.Http,Json.net,Log4net,Quartz.net...),支持分布式、高并发和负载均衡,实现了服务治理(如服务注册、发现、健康检测...)和RPC调用。jimu(积木),正如......
  • <Project-11 Calculator> 计算器 0.5 液体、长度、温度单位 转换器 liquid_measures HTM
    前言这是一个综合性的单位换算工具,提供了多种常用计量单位之间的转换功能。不断完善style各页面风格统一,格式一致。容量单位换算支持在公制单位(升、毫升、立方厘米)美制容量单位(加仑、夸脱、品脱、杯、液体盎司)厨房计量单位(汤匙、茶匙、米杯)之间相互转换长度单位换算公......
  • iis部署tms web core
    iis部署tmswebcore首先准备好你要发布的网站文件夹 1)iis设置网站2)1、打开“IIS信息服务管理器”——》选择你发布的网站——》选择功能视图中的“身份验证”——》右键匿名身份验证,选择“编辑”,选择“特定用户IUSR”;2、右键要发布的网站文件夹,选择“安全”——》“编辑......
  • 如何在WPF程序中启用ASP.NET Core的功能
    本文介绍一种如何在WPF程序中启用ASP.NETCore功能的方法关于ASP.NETCore,如果之前不太了解,那么简介就是ASP.NETCore是一个跨平台、高性能的开源框架,用于构建支持云的现代Internet连接应用程序。简单来说,就是启用web服务器的功能,以实现WebAPI,亦或是Razor网页等功能。......
  • 【磐维数据库】3.0运行"show events;"命令,引发集群主节点CoreDump
    一、环境介绍数据库PanWeiDBV2.0-S3.0.0_B01架构Intel+x86_64操作系统BCLinux-for-Euler-21.10内核4.19.90-2107.6.0.0192.8.oe1.bclinux.x86_64二、故障场景1、客户环境可以稳定复现gsql-rshowevents;\cbomcdb;--------业务库名称sh......
  • 使用qgis.core模块快速转换s57数据
    importosfromqgis.coreimport(QgsVectorLayer,QgsVectorFileWriter)#解析S57图层信息的函数defextract_s57_layer_info(s57layers:list[str])->list[tuple]:extracted_info=[]#内部的解析函数defparse_layer_info(layer_info)......
  • wsl ubuntu20.04设置core文件生成路径
    1.首先要确定允许生成core文件#在终端执行下列命令,执行后仅本次会话有效,如需每次都生效,可以添加到~/.bashrc文件中ulimit-cunlimited2.查看core文件的生成目录cat/proc/sys/kernel/core_pattern3.临时设置core文件的生成目录#先切换到root用户,然后输入,其中./表示生......