换成单集群模式

This commit is contained in:
robin
2026-03-02 20:07:53 +08:00
parent 5d0b7c7e91
commit 2a76d1773d
432 changed files with 5681 additions and 5095 deletions

View File

@@ -3,41 +3,51 @@
<h3>创建用户</h3>
<form class="ui form" method="post" data-tea-action="$" data-tea-success="success">
<csrf-token></csrf-token>
<table class="ui table definition selectable">
<csrf-token></csrf-token>
<table class="ui table definition selectable">
<tr>
<td class="title">用户名 *</td>
<td>
<input type="text" name="username" maxlength="100" ref="focus"/>
<input type="text" name="username" maxlength="100" ref="focus" />
<p class="comment">用户名只能是英文、数字、下划线的组合。</p>
</td>
</tr>
<tr>
<td>密码 *</td>
<td>
<input type="password" name="pass1" maxlength="100"/>
<input type="password" name="pass1" maxlength="100" />
</td>
</tr>
<tr>
<td>确认密码 *</td>
<td>
<input type="password" name="pass2" maxlength="100"/>
<input type="password" name="pass2" maxlength="100" />
</td>
</tr>
<tr>
<td>全名 *</td>
<td>
<input type="text" name="fullname" maxlength="100"/>
<input type="text" name="fullname" maxlength="100" />
<p class="comment">用户姓名或者公司名称等等。</p>
</td>
</tr>
<tr>
<td>关联集群 *</td>
<td>CDN关联集群 *</td>
<td>
<cluster-selector></cluster-selector>
<p class="comment">用户发布的网站会自动部署到此集群。</p>
</td>
</tr>
<tr v-if="hasHTTPDNSFeature">
<td>HTTPDNS关联集群</td>
<td>
<select class="ui dropdown auto-width" name="httpdnsClusterId" v-model="httpdnsClusterId">
<option value="0">[未选择]</option>
<option v-for="cluster in httpdnsClusters" :value="cluster.id">{{cluster.name}}</option>
</select>
<p class="comment">用户发布的 HTTPDNS 应用会自动关联到此集群。</p>
</td>
</tr>
<tr v-show="teaIsPlus">
<td>开通功能</td>
<td>
@@ -54,19 +64,19 @@
<tr>
<td>手机号</td>
<td>
<input type="text" name="mobile" maxlength="11"/>
<input type="text" name="mobile" maxlength="11" />
</td>
</tr>
<tr>
<td>联系电话</td>
<td>
<input type="text" name="tel" maxlength="100"/>
<input type="text" name="tel" maxlength="100" />
</td>
</tr>
<tr>
<td>电子邮箱</td>
<td>
<input type="text" name="email" maxlength="100"/>
<input type="text" name="email" maxlength="100" />
</td>
</tr>
<tr>
@@ -83,6 +93,6 @@
</td>
</tr>
</tbody>
</table>
<submit-btn></submit-btn>
</table>
<submit-btn></submit-btn>
</form>

View File

@@ -43,7 +43,9 @@
<td class="title">检查客户端区域</td>
<td>
<checkbox name="checkClientRegion" v-model="config.checkClientRegion"></checkbox>
<p class="comment">选中后,表示每次用户访问时都检查客户端所在地理区域是否和登录时一致,以提升安全性;如果当前系统下游有反向代理设置,请在<a href="/settings/user-ui#client-ip-header-names" target="_blank">[用户界面设置]</a>中设置“自定义客户端IP报头”选项。</p>
<p class="comment">选中后,表示每次用户访问时都检查客户端所在地理区域是否和登录时一致,以提升安全性;如果当前系统下游有反向代理设置,请在<a
href="/settings/user-ui#client-ip-header-names" target="_blank">[用户界面设置]</a>中设置“自定义客户端IP报头”选项。
</p>
</td>
</tr>
</table>
@@ -54,14 +56,16 @@
<td class="title">启用电子邮箱绑定功能</td>
<td>
<checkbox name="emailVerificationIsOn" v-model="config.emailVerification.isOn"></checkbox>
<p class="comment">选中后,电子邮箱需要激活之后可以使用邮箱登录、找回密码等。此功能需要事先设置 <a href="/users/setting/email" target="_blank">[激活邮件设置]</a></p>
<p class="comment">选中后,电子邮箱需要激活之后可以使用邮箱登录、找回密码等。此功能需要事先设置 <a href="/users/setting/email"
target="_blank">[激活邮件设置]</a></p>
</td>
</tr>
<tbody v-show="config.emailVerification.isOn">
<tr>
<td>提示用户未绑定</td>
<td>
<checkbox name="emailVerificationShowNotice" v-model="config.emailVerification.showNotice"></checkbox>
<checkbox name="emailVerificationShowNotice" v-model="config.emailVerification.showNotice">
</checkbox>
<p class="comment">选中后,将在页面上提示用户尚未绑定电子邮箱.</p>
</td>
</tr>
@@ -73,20 +77,25 @@
</td>
</tr>
<tr>
<td colspan="2"><more-options-indicator v-model="emailVerificationMoreOptions"></more-options-indicator></td>
<td colspan="2"><more-options-indicator v-model="emailVerificationMoreOptions"></more-options-indicator>
</td>
</tr>
<tr v-show="emailVerificationMoreOptions">
<td>激活邮件标题</td>
<td>
<input type="text" name="emailVerificationSubject" v-model="config.emailVerification.subject"/>
<p class="comment">其中<code-label>${product.name}</code-label>为当前设置的<a href="/settings/ui" target="_blank">产品名称</a></p>
<input type="text" name="emailVerificationSubject" v-model="config.emailVerification.subject" />
<p class="comment">其中<code-label>${product.name}</code-label>为当前设置的<a href="/settings/ui"
target="_blank">产品名称</a></p>
</td>
</tr>
<tr v-show="emailVerificationMoreOptions">
<td>激活邮件内容</td>
<td>
<textarea name="emailVerificationBody" rows="8" v-model="config.emailVerification.body"></textarea>
<p class="comment">可以使用简单的HTML其中<code-label>${product.name}</code-label>为当前设置的<a href="/settings/ui" target="_blank">产品名称</a><code-label>${url.verify}</code-label>为生成的激活地址,<code-label>${url.home}</code-label>为用户平台主页地址,由<a href="/settings/userNodes" target="_blank">用户节点</a>访问地址组合而成。</p>
<p class="comment">可以使用简单的HTML其中<code-label>${product.name}</code-label>为当前设置的<a
href="/settings/ui"
target="_blank">产品名称</a><code-label>${url.verify}</code-label>为生成的激活地址,<code-label>${url.home}</code-label>为用户平台主页地址,由<a
href="/settings/userNodes" target="_blank">用户节点</a>访问地址组合而成。</p>
</td>
</tr>
</tbody>
@@ -106,20 +115,27 @@
</tr>
<tbody v-show="config.emailResetPassword.isOn">
<tr>
<td colspan="2"><more-options-indicator v-model="emailResetPasswordMoreOptions"></more-options-indicator></td>
<td colspan="2"><more-options-indicator
v-model="emailResetPasswordMoreOptions"></more-options-indicator></td>
</tr>
<tr v-show="emailResetPasswordMoreOptions">
<td>找回密码邮件标题</td>
<td>
<input type="text" name="emailResetPasswordSubject" v-model="config.emailResetPassword.subject" maxlength="100"/>
<p class="comment">其中<code-label>${product.name}</code-label>为当前设置的<a href="/settings/ui" target="_blank">产品名称</a></p>
<input type="text" name="emailResetPasswordSubject" v-model="config.emailResetPassword.subject"
maxlength="100" />
<p class="comment">其中<code-label>${product.name}</code-label>为当前设置的<a href="/settings/ui"
target="_blank">产品名称</a></p>
</td>
</tr>
<tr v-show="emailResetPasswordMoreOptions">
<td>找回密码邮件内容</td>
<td>
<textarea name="emailResetPasswordBody" v-model="config.emailResetPassword.body" rows="5"></textarea>
<p class="comment">可以使用简单的HTML其中<code-label>${product.name}</code-label>为当前设置的<a href="/settings/ui" target="_blank">产品名称</a><code-label>${code}</code-label>为找回密码时用到的验证码,<code-label>${url.home}</code-label>为用户平台主页地址,由<a href="/settings/userNodes" target="_blank">用户节点</a>访问地址组合而成。</p>
<textarea name="emailResetPasswordBody" v-model="config.emailResetPassword.body"
rows="5"></textarea>
<p class="comment">可以使用简单的HTML其中<code-label>${product.name}</code-label>为当前设置的<a
href="/settings/ui"
target="_blank">产品名称</a><code-label>${code}</code-label>为找回密码时用到的验证码,<code-label>${url.home}</code-label>为用户平台主页地址,由<a
href="/settings/userNodes" target="_blank">用户节点</a>访问地址组合而成。</p>
</td>
</tr>
</tbody>
@@ -133,14 +149,16 @@
<td class="title">启用手机号码绑定功能</td>
<td>
<checkbox name="mobileVerificationIsOn" v-model="config.mobileVerification.isOn"></checkbox>
<p class="comment">选中后,手机号码需要激活之后可以使用手机号码、找回密码等。此功能需要事先设置 <a href="/users/setting/sms" target="_blank">[激活短信设置]</a></p>
<p class="comment">选中后,手机号码需要激活之后可以使用手机号码、找回密码等。此功能需要事先设置 <a href="/users/setting/sms"
target="_blank">[激活短信设置]</a></p>
</td>
</tr>
<tbody v-show="config.mobileVerification.isOn">
<tr>
<td>提示用户未绑定</td>
<td>
<checkbox name="mobileVerificationShowNotice" v-model="config.mobileVerification.showNotice"></checkbox>
<checkbox name="mobileVerificationShowNotice" v-model="config.mobileVerification.showNotice">
</checkbox>
<p class="comment">选中后,将在页面上提示用户尚未绑定手机号码.</p>
</td>
</tr>
@@ -159,12 +177,14 @@
</td>
</tr>
<tr>
<td colspan="2"><more-options-indicator v-model="mobileVerificationMoreOptions"></more-options-indicator></td>
<td colspan="2"><more-options-indicator
v-model="mobileVerificationMoreOptions"></more-options-indicator></td>
</tr>
<tr v-show="mobileVerificationMoreOptions">
<td>激活短信内容</td>
<td>
<textarea name="mobileVerificationBody" rows="8" v-model="config.mobileVerification.body"></textarea>
<textarea name="mobileVerificationBody" rows="8"
v-model="config.mobileVerification.body"></textarea>
<p class="comment">其中使用<code-label>${code}</code-label>表示验证码。</p>
</td>
</tr>
@@ -200,12 +220,14 @@
</div>
<span v-else class="grey">暂时还没有开通任何功能。</span>
<div style="margin-top: 0.1em">
<a href="" @click.prevent="showFeatures">修改<i class="icon angle" :class="{up: featuresVisible, down: !featuresVisible}"></i></a>
<a href="" @click.prevent="showFeatures">修改<i class="icon angle"
:class="{up: featuresVisible, down: !featuresVisible}"></i></a>
</div>
</div>
<div class="feature-boxes" v-show="featuresVisible" style="margin-top: 1em">
<div class="feature-box" v-for="feature in features">
<checkbox name="features" :v-value="feature.code" v-model="feature.isChecked">{{feature.name}}</checkbox>
<checkbox name="features" :v-value="feature.code" v-model="feature.isChecked">
{{feature.name}}</checkbox>
<p class="comment">{{feature.description}}</p>
</div>
</div>
@@ -233,7 +255,8 @@
<table class="ui table definition selectable">
<tr>
<td class="title">开通DDoS高防管理</td>
<td><checkbox name="adIsOn" v-model="config.adIsOn"></checkbox>
<td>
<checkbox name="adIsOn" v-model="config.adIsOn"></checkbox>
<p class="comment">选中表示自动为用户开通DDoS高防IP使用服务。</p>
</td>
</tr>
@@ -247,8 +270,9 @@
<table class="ui table definition selectable">
<tr>
<td class="title">开通智能DNS服务</td>
<td><checkbox name="nsIsOn" v-model="config.nsIsOn"></checkbox>
<p class="comment">选中表示自动为用户开通智能DNS服务。</p>
<td>
<checkbox name="nsIsOn" v-model="config.nsIsOn"></checkbox>
<p class="comment">选中表示自动为用户开通智能DNS服务。使用默认集群资源如需使用其他集群请到用户新增和业务设置页面中进行选择。</p>
</td>
</tr>
</table>
@@ -261,12 +285,23 @@
<table class="ui table definition selectable">
<tr>
<td class="title">开通HTTPDNS服务</td>
<td><checkbox name="httpdnsIsOn" v-model="config.httpdnsIsOn"></checkbox>
<p class="comment">选中表示自动为用户开通HTTPDNS服务。</p>
<td>
<checkbox name="httpdnsIsOn" v-model="config.httpdnsIsOn"></checkbox>
<p class="comment">选中表示自动为用户开通HTTPDNS服务。使用默认集群资源如需使用其他集群请到用户新增和业务设置页面中进行选择。</p>
</td>
</tr>
<tr v-show="config.httpdnsIsOn">
<td>默认分配集群</td>
<td>
<select class="ui dropdown auto-width" name="httpdnsDefaultClusterId" v-model="httpdnsDefaultClusterId">
<option value="0">[未选择]</option>
<option v-for="cluster in httpdnsClusters" :value="cluster.id">{{cluster.name}}</option>
</select>
<p class="comment">用户新建 HTTPDNS 应用时默认分配的集群。</p>
</td>
</tr>
</table>
<div class="margin"></div>
<submit-btn></submit-btn>
</form>
</form>

View File

@@ -39,12 +39,22 @@
</td>
</tr>
<tr>
<td>关联集群 *</td>
<td>CDN关联集群 *</td>
<td>
<cluster-selector :v-cluster-id="clusterId"></cluster-selector>
<p class="comment">用户发布的网站会自动部署到此集群,修改此选项会同步修改当前用户下的所有网站,但不影响和套餐绑定的服务。</p>
</td>
</tr>
<tr v-if="hasHTTPDNSFeature">
<td>HTTPDNS关联集群</td>
<td>
<select class="ui dropdown auto-width" name="httpdnsClusterId" v-model="httpdnsClusterId">
<option value="0">[未选择]</option>
<option v-for="cluster in httpdnsClusters" :value="cluster.id">{{cluster.name}}</option>
</select>
<p class="comment">用户新建 HTTPDNS 应用时默认分配的集群。</p>
</td>
</tr>
<tr>
<td colspan="2"><more-options-indicator></more-options-indicator></td>
</tr>

View File

@@ -9,12 +9,13 @@
信息未审核 &nbsp; <a href="" @click.prevent="verify">[审核]</a>
</span>
<span v-else-if="user.isRejected" class="red">已拒绝
&nbsp; <a href="" @click.prevent="verify">[重新审核]</a>
&nbsp; <a href="" @click.prevent="verify">[重新审核]</a>
</span>
<span v-else>
<label-on :v-is-on="user.isOn"></label-on>
</span>
<p class="comment" v-if="user.isVerified && user.isRejected && user.rejectReason.length > 0">拒绝原因:{{user.rejectReason}}</p>
<p class="comment" v-if="user.isVerified && user.isRejected && user.rejectReason.length > 0">
拒绝原因:{{user.rejectReason}}</p>
</td>
</tr>
<tr>
@@ -30,9 +31,18 @@
</td>
</tr>
<tr>
<td>关联集群</td>
<td>CDN关联集群</td>
<td>
<span v-if="user.cluster != null">{{user.cluster.name}} <link-icon :href="'/clusters/cluster?clusterId=' + user.cluster.id"></link-icon></span>
<span v-if="user.cluster != null">{{user.cluster.name}} <link-icon
:href="'/clusters/cluster?clusterId=' + user.cluster.id"></link-icon></span>
<span v-else class="disabled">没有设置。</span>
</td>
</tr>
<tr v-if="hasHTTPDNSFeature">
<td>HTTPDNS关联集群</td>
<td>
<span v-if="user.httpdnsCluster != null">{{user.httpdnsCluster.name}} <link-icon
:href="'/httpdns/clusters/cluster?clusterId=' + user.httpdnsCluster.id"></link-icon></span>
<span v-else class="disabled">没有设置。</span>
</td>
</tr>
@@ -106,8 +116,9 @@
<tr v-if="otp != null && otp.isOn && moreOptionsVisible">
<td>认证二维码</td>
<td>
<img alt="qrcode" :src="'./otpQrcode?userId=' + user.id"/>
<p class="comment"><a :href="'./otpQrcode?userId=' + user.id + '&download=true'">[下载]</a> &nbsp; 可以通过二维码快速添加OTP认证信息到认证App中。</p>
<img alt="qrcode" :src="'./otpQrcode?userId=' + user.id" />
<p class="comment"><a :href="'./otpQrcode?userId=' + user.id + '&download=true'">[下载]</a> &nbsp;
可以通过二维码快速添加OTP认证信息到认证App中。</p>
</td>
</tr>
<tr v-if="otp != null && otp.isOn && moreOptionsVisible">