mumsnet/mn-toolkit

此包包含我们在所有项目中使用的各种功能。这些功能是从旧版Ruby gems复制的。


README

此仓库存放我们的composer包mn-toolkit的源代码。此包包含以下功能

  • 功能开关 - 用于开启和关闭功能
    您可以使用'isOn'函数检查功能开关的状态。您可以使用'getToggles'函数检查可用的开关。还有用于检查白名单和黑名单URI的函数。
    这些函数只需提供开关和请求URI即可。

  • 本地文件缓存 - 如果存在,返回与$key关联的缓存值,否则使用$loadFunction加载它并将其添加到缓存。

  • 甘尼什文件存储适配器 - 电路断路器模式的PHP实现
    更多信息请访问:https://github.com/ackintosh/ganesha

  • 全局记录器 - 此包的记录器类
    全局记录器用于设置全局记录器实例,并在需要时检索它,以便我们可以将其用于记录错误。这会将错误发送到您的本地日志以及到生产环境的papertrail。我们主要用它来记录系统错误,您可以使用它如下:log::error('Token does not exist');

  • 全局前端 - 加载和缓存全局资产

  • JWT - 用于添加和检查JWT令牌,以保护跨微服务请求
    要设置JWT令牌,请使用ENV值在JWT网站上生成它。文档中有JWT指南。令牌生成后,您将其添加到所有要保护请求的Authorization头中。要检查请求是否有令牌,您可以使用
    $authorization = $request->header('Authorization');
    $withoutBearer = str_replace('bearer ', '', $authorization);
    if($authorization && $withoutBearer != ''){
    $isValid = JWT::getInstance()->isValidToken($withoutBearer);
    if($isValid){
    return $next($request);
    }
    }

  • 事务性电子邮件 - 发送事务性电子邮件
    要使用此功能,您需要传递一个您的记录器实例,以便包可以在发送过程中记录错误。您可以使用如下方式使用它
    $logger = Log::getLogger();
    $mn_transctional_email = new SendTransactionalEmail($logger);
    $mn_transctional_email->sendTransactionalEmail($template, $email, 'Mumnset通知', '您好,panos', '127.0.0.1', ['body' => $body]);
    sendTransactionalEmail函数需要以下参数
    $message_type,
    $to_address,
    $subject,
    $fallback_text,
    $request_id,
    $template_fields = [],
    $cc_addresses = ''

  • 源IP检测 - 可能不需要这个

  • 网站行为(Graylog)- 用于行为记录的记录器
    此记录器主要用于记录用户行为,如:用户尝试在不登录的情况下更新个人信息。
    在这些日志中,您可以传递大量信息,如下所示
    $this->siteaction = SiteAction::getInstance();
    $this->siteaction->log($user_id, 'Failed to created pregnancy record', 'profile', 'profile_update', ['errors' => json_encode($e->getMessage())]);

  • 关联ID(设置原始请求ID)
    如果不存在,设置原始请求ID头,用于关联和跟踪请求

  • lambda的用户会话(SSO)- 为通过lambda登录设置用户会话,它的使用方式与下面的laravel用户会话相同

  • laravel的用户会话(SSO)- 为通过laravel登录设置用户会话
    您可以设置会话如下
    创建一个 UserSessionsLaravel 对象:$session = new UserSessionsLaravel();
    设置用户会话:$session->setUserSession(['user_id' => $userEmailCheck->id], true);
    可以从会话中获取用户 ID,如下所示:
    通过 $_COOKIE 创建一个 UserSessionsLaravel 对象:$session = new UserSessionsLaravel($_COOKIE);
    获取会话中的用户 ID:$userId = $session->getUserIdFromSession();

  • Slack 消息发送器 - 接受一个频道和一条消息,并将消息发送到该频道
    使用非常简单。只需调用函数并传入频道名称和消息。确保你的 .ENV 文件中有频道的凭证。 SlackMessenger::sendMessage('channel','message')

安装

通过 Composer 安装

$ composer require mumsnet/mn-toolkit