elefant / app-saasy
Elefant CMS 的 SaaS 辅助应用程序
Requires
This package is auto-updated.
Last update: 2024-08-25 07:06:08 UTC
README
Saasy 是一个 Elefant 应用程序,它为构建定制的软件即服务(SaaS)应用程序提供粘合剂。它提供基本的客户和账户管理、Bootstrap 集成以及应用程序结构,以便您可以专注于创建 SaaS 应用程序的定制功能。
状态: 测试版
屏幕截图
安装
- 将应用程序放入您的
apps
文件夹。 - 将文件
apps/saasy/conf/config.php
复制到conf/app.saasy.config.php
并在那里编辑设置。这里将是大部分定制发生的地方。 - 将文件
apps/saasy/conf/user_config.php
复制到conf/app.user.config.php
以将用户注册、更新和配置文件屏幕链接到 Saasy 的处理程序。 - 将包含的
sample_bootstrap.php
复制到您网站的根目录中,并将其重命名为bootstrap.php
。 - 将包含的
saasy.html
复制到您的layouts
文件夹。 - 在全局
conf/config.php
中设置default_handler
为"saasy/index"
,设置default_layout
为"saasy"
,并设置session_domain = top
。 - 转到工具 > SaaS 管理器以安装客户和账户的数据库模式。
注意: 还建议在全局 conf/config.php
中将 session_domain
设置更改为 top
。这将确保子域之间的登录正常工作,因此 www.example.com
的登录也适用于 mysubdomain.example.com
。
待办事项
- 更多文档/示例
- 账单/订阅管理
- 管理客户和账户的仪表板
- 可定制的主题颜色
定制
Saasy 通过将您的应用程序钩接到其各种设置中而工作。您可能只需要编辑 conf/app.saasy.config.php
中的 Saasy 配置,而不需要直接编辑任何 Saasy 源文件。
相反,创建一个包含所有模型、视图模板和处理程序的第二级应用程序,并通过上述配置文件将 Saasy 指向它们。以下是一个典型 Saasy 设置的示例文件夹结构
apps/
myapp/
conf/
handlers/
models/
views/
saasy/
conf/
handlers/
lib/
models/
bootstrap.php (copied from apps/saasy/sample_bootstrap.php)
conf/
app.saasy.config.php (copied from apps/saasy/conf/config.php)
layouts/
saasy.html (copied from apps/saasy/saasy.html)
使用应用程序脚手架生成器
Saasy 向 Elefant 命令行工具添加了一个命令,您可以使用它自动生成应用程序的基本脚手架和配置文件。以下是命令期望的格式
./elefant saasy/app <appname> <title> [<section>, <section>]
<appname>
是您的应用程序文件夹的名称<title>
是您的 SaaS 应用程序的标题<section>
是您的应用程序的导航标签列表
例如,要创建一个名为 "Project Spot" 的基本应用程序,具有消息、任务、文件和维基的导航选项,您会说
./elefant saasy/app projectspot "Project Spot" Messages Tasks Files Wiki
这将创建一个预配置的 conf/app.saasy.config.php
以及您的应用程序的轮廓,包括模型、模式、处理程序和视图。
从这里开始,您需要编辑您的数据库模式,位于 apps/<appname>/conf/
中,然后通过以下方式导入它
./elefant import-db apps/<appname>/conf/install_mysql.sql
请确保根据您的网站使用的数据库更改应用程序名称和模式文件。
向您的 SaaS 应用程序添加部分
要向您的 SaaS 应用程序添加新部分,在您的应用程序中创建一个具有以下布局的处理程序
<?php // Prevent direct access to this handler if (! saasy\App::authorize ($page, $tpl)) return; // Your handler logic goes here ?>
如果您的处理程序名称是 myapp/reports
,要将此包含在您的 SaaS 菜单中,请向 apps/saasy/conf/config.php
的 [Sections]
部分添加以下行
reports[myapp/reports] = Reports
现在它将作为 "报告" 出现在您的 SaaS 应用程序菜单中。
添加自定义主题
要添加自定义主题,在您的应用程序中创建一个名为 theme.php
的处理程序,并包含以下内容
<?php $page->add_style ('/apps/myapp/css/custom.css'); ?>
接下来,创建一个文件 apps/myapp/css/custom.css
,在其中添加您想要的任何自定义样式。请注意,Saasy 使用 Bootstrap 进行布局,因此您可以参考他们的网站了解类和元素的名称以进行样式设置。
最后,编辑配置并将 theme
设置指向我们新的处理器,如下所示
theme = myapp/theme
这样做是为了作为处理器,以便您可以为应用程序的需求包含任意数量的初始化。
设置 SaaS 应用程序的基 URL
由于我们不是直接访问我们的自定义应用程序,并且我们不希望所有 URL 都以 /saasy/
开头,因此我们可以将 app_alias
设置设置为另一个名称,Saasy 会自动将其别名指向我们的应用程序。因此,如果我们想通过 URL /myapp
访问我们的 SaaS 应用程序,那么我们将设置 app_alias
如下所示
app_alias = myapp
获取当前客户 ID
为了使一位客户的数据与其他客户的数据分开,您需要在模型中添加一个客户字段来存储客户 ID。客户 ID 是一个整数值,您可以通过自定义应用程序获取
<?php $customer_id = \saasy\App::customer()->id; // do something with $customer_id ?>
您也可以通过调用 \saasy\App::customer()
来获取客户对象本身。
强制执行账户限制
Saasy 会查看您的应用程序以定义是否需要账户限制。这是通过将您的 conf/app.saasy.config.php
文件中的 limits
设置指向在您的应用程序中定义的方法调用来实现的。例如
limits = "myapp\Account::limits"
这对应于文件 apps/myapp/lib/Account.php
中的一个类,如下所示
<?php namespace myapp; class Account { /** * Returns a list of account limits. */ public static function limits () { return array ( 1 => array ( 'name' => __ ('Basic'), 'members' => 0 // no sub-accounts ), 2 => array ( 'name' => __ ('Standard'), 'members' => 5 // up to 5 member accounts ), 3 => array ( 'name' => __ ('Pro'), 'members' => -1 // unlimited members ) ); } } ?>
请注意,数组键明确从 1
开始,这是因为 0
表示已禁用的账户。
使用 members
值在账户区域强制执行成员账户限制。还可以在此处添加额外的自定义限制。
从这里,您可以获取特定客户的限制,如下所示
<?php // get the current customer object $customer = saasy\App::customer (); // get all limits for the current account level $limits = saasy\App::limits ($customer->level); // get a specific limit value, with default to -1 if not set $member_limit = saasy\App::limit ($customer->level, 'members', -1); ?>
如您所见,这些方法使将限制集成到 SaaS 应用程序变得容易。