Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MaxKey单点登录官方(MaxKeyTop)
MaxKey
提交
21c7c956
MaxKey
项目概览
MaxKey单点登录官方(MaxKeyTop)
/
MaxKey
9 个月 前同步成功
通知
75
Star
3
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
MaxKey
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
21c7c956
编写于
3月 25, 2021
作者:
M
MaxKey
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
v2.7.0.GA
增加适配器注册
上级
85cffc89
变更
22
隐藏空白更改
内联
并排
Showing
22 changed file
with
1020 addition
and
95 deletion
+1020
-95
ReleaseNotes.txt
ReleaseNotes.txt
+34
-1
maxkey-core/src/main/java/org/maxkey/domain/apps/Apps.java
maxkey-core/src/main/java/org/maxkey/domain/apps/Apps.java
+105
-70
maxkey-core/src/main/java/org/maxkey/domain/apps/AppsAdapters.java
...re/src/main/java/org/maxkey/domain/apps/AppsAdapters.java
+200
-0
maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/AccountsMapper.java
...in/java/org/maxkey/persistence/mapper/AccountsMapper.java
+1
-1
maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/AppsAdaptersMapper.java
...ava/org/maxkey/persistence/mapper/AppsAdaptersMapper.java
+33
-0
maxkey-persistence/src/main/java/org/maxkey/persistence/service/AppsAdaptersService.java
...a/org/maxkey/persistence/service/AppsAdaptersService.java
+40
-0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/AppsAdaptersMapper.xml
...axkey/persistence/mapper/xml/mysql/AppsAdaptersMapper.xml
+30
-0
maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/consumer/endpoint/ConsumerEndpoint.java
...xkey/authz/saml20/consumer/endpoint/ConsumerEndpoint.java
+1
-1
maxkey-web-manage/src/main/java/org/maxkey/web/apps/contorller/AdaptersController.java
...va/org/maxkey/web/apps/contorller/AdaptersController.java
+147
-0
maxkey-web-manage/src/main/resources/messages/message.properties
...web-manage/src/main/resources/messages/message.properties
+7
-0
maxkey-web-manage/src/main/resources/messages/message_en.properties
...-manage/src/main/resources/messages/message_en.properties
+8
-1
maxkey-web-manage/src/main/resources/messages/message_zh_CN.properties
...nage/src/main/resources/messages/message_zh_CN.properties
+6
-0
maxkey-web-manage/src/main/resources/templates/views/apps/adapters/adapterAdd.ftl
...in/resources/templates/views/apps/adapters/adapterAdd.ftl
+81
-0
maxkey-web-manage/src/main/resources/templates/views/apps/adapters/adapterUpdate.ftl
...resources/templates/views/apps/adapters/adapterUpdate.ftl
+71
-0
maxkey-web-manage/src/main/resources/templates/views/apps/adapters/adaptersList.ftl
.../resources/templates/views/apps/adapters/adaptersList.ftl
+130
-0
maxkey-web-manage/src/main/resources/templates/views/apps/adapters/selectAdaptersList.ftl
...rces/templates/views/apps/adapters/selectAdaptersList.ftl
+82
-0
maxkey-web-manage/src/main/resources/templates/views/apps/appAddCommon.ftl
.../src/main/resources/templates/views/apps/appAddCommon.ftl
+16
-5
maxkey-web-manage/src/main/resources/templates/views/apps/appUpdateCommon.ftl
...c/main/resources/templates/views/apps/appUpdateCommon.ftl
+11
-6
maxkey-web-manage/src/main/resources/templates/views/apps/appsList.ftl
...nage/src/main/resources/templates/views/apps/appsList.ftl
+7
-8
maxkey-web-manage/src/main/resources/templates/views/layout/sidenav.ftl
...age/src/main/resources/templates/views/layout/sidenav.ftl
+7
-0
maxkey-web-maxkey/src/main/resources/application.properties
maxkey-web-maxkey/src/main/resources/application.properties
+1
-1
maxkey-web-maxkey/src/main/resources/maxkey.properties
maxkey-web-maxkey/src/main/resources/maxkey.properties
+2
-1
未找到文件。
ReleaseNotes.txt
浏览文件 @
21c7c956
MaxKey v 2.6.0 GA 2021/03/05
MaxKey v 2.7.0 GA 2021/04/**
*(MAXKEY-210301) 加入Dromara开源组织,官方网站的优化,文档优化
*(MAXKEY-210302) BootJar,Docker,Standard三种打包方式的配置优化
*(MAXKEY-210303) 数据库访问注释由@Service改为@Repository
*(MAXKEY-210304) cas logout优化支持
*(MAXKEY-210305) CAS单点注销及返回数据类型适配器的优化
*(MAXKEY-210306) CAS返回数据类重构
*(MAXKEY-210307) ExtendApi标准优化
*(MAXKEY-210308) 增加基于时间签名的ExtendApi适配器
*(MAXKEY-210309) 返回数据Constants整合
*(MAXKEY-210310) 扩展数据配置优化
*(MAXKEY-210311) LDAP和MS AD固定属性Constants
*(MAXKEY-210312) SpringSecurity OAuth 2客户端登录适配
*(MAXKEY-210313) 移除Desktop的支持,后续可以开发FormBase的适配器定制
*(MAXKEY-210314) application.properties profiles的优化,不同环境启动更加简单
*(MAXKEY-210315) 增加适配器注册功能,在配置应用时只需选择对应的适配器
*(MAXKEY-210316) 增加Synchronizer接口同步的功能
*(MAXKEY-210317) 增加TimeBased OTP接口支持
*(MAXKEY-210318) XSS安全防护功能
*(MAXKEY-210319) 禅道项目管理系统单点登录适配
*(MAXKEY-210320) GitLab单点登录适配
*(MAXKEY-210321) 云速邮箱单点登录适配
*(MAXKEY-210322) JumpServer开源堡垒机单点登录适配
*(MAXKEY-210323) 华为云单点登录适配
*(MAXKEY-210324) Jenkins单点登录适配
*(MAXKEY-210324) 查询参数优化
*(MAXKEY-210226) 依赖jar引用、更新和升级
log4j 2.14.1
spring 5.3.5
springBoot 2.4.4
tomcat 9.0.44
MaxKey v 2.6.0 GA 2021/03/05
*(MAXKEY-210201) 官方网站的优化
*(MAXKEY-210202) CAS代理模式实现的优化,完成demo的测试
*(MAXKEY-210203) CAS代理模式Demo开发和实现
...
...
maxkey-core/src/main/java/org/maxkey/domain/apps/Apps.java
浏览文件 @
21c7c956
...
...
@@ -18,6 +18,7 @@
package
org.maxkey.domain.apps
;
import
java.io.Serializable
;
import
java.util.Arrays
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
...
...
@@ -132,6 +133,12 @@ public class Apps extends JpaBaseDomain implements Serializable {
private
int
isSignature
;
@Column
private
int
isAdapter
;
@Column
private
String
adapterId
;
@Column
private
String
adapterName
;
@Column
private
String
adapter
;
...
...
@@ -561,75 +568,103 @@ public class Apps extends JpaBaseDomain implements Serializable {
this
.
onlineTicket
=
onlineTicket
;
}
@Override
public
String
toString
()
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
"Apps [id="
);
builder
.
append
(
id
);
builder
.
append
(
", name="
);
builder
.
append
(
name
);
builder
.
append
(
", loginUrl="
);
builder
.
append
(
loginUrl
);
builder
.
append
(
", category="
);
builder
.
append
(
category
);
builder
.
append
(
", protocol="
);
builder
.
append
(
protocol
);
builder
.
append
(
", secret="
);
builder
.
append
(
secret
);
builder
.
append
(
", visible="
);
builder
.
append
(
visible
);
builder
.
append
(
", inducer="
);
builder
.
append
(
inducer
);
builder
.
append
(
", vendor="
);
builder
.
append
(
vendor
);
builder
.
append
(
", vendorUrl="
);
builder
.
append
(
vendorUrl
);
builder
.
append
(
", credential="
);
builder
.
append
(
credential
);
builder
.
append
(
", sharedUsername="
);
builder
.
append
(
sharedUsername
);
builder
.
append
(
", sharedPassword="
);
builder
.
append
(
sharedPassword
);
builder
.
append
(
", systemUserAttr="
);
builder
.
append
(
systemUserAttr
);
builder
.
append
(
", principal="
);
builder
.
append
(
principal
);
builder
.
append
(
", credentials="
);
builder
.
append
(
credentials
);
builder
.
append
(
", logoutUrl="
);
builder
.
append
(
logoutUrl
);
builder
.
append
(
", logoutType="
);
builder
.
append
(
logoutType
);
builder
.
append
(
", isExtendAttr="
);
builder
.
append
(
isExtendAttr
);
builder
.
append
(
", extendAttr="
);
builder
.
append
(
extendAttr
);
builder
.
append
(
", userPropertys="
);
builder
.
append
(
userPropertys
);
builder
.
append
(
", isSignature="
);
builder
.
append
(
isSignature
);
builder
.
append
(
", isAdapter="
);
builder
.
append
(
isAdapter
);
builder
.
append
(
", adapter="
);
builder
.
append
(
adapter
);
builder
.
append
(
", appUser="
);
builder
.
append
(
appUser
);
builder
.
append
(
", sortIndex="
);
builder
.
append
(
sortIndex
);
builder
.
append
(
", status="
);
builder
.
append
(
status
);
builder
.
append
(
", createdBy="
);
builder
.
append
(
createdBy
);
builder
.
append
(
", createdDate="
);
builder
.
append
(
createdDate
);
builder
.
append
(
", modifiedBy="
);
builder
.
append
(
modifiedBy
);
builder
.
append
(
", modifiedDate="
);
builder
.
append
(
modifiedDate
);
builder
.
append
(
", description="
);
builder
.
append
(
description
);
builder
.
append
(
"]"
);
return
builder
.
toString
();
}
public
String
getAdapterId
()
{
return
adapterId
;
}
public
void
setAdapterId
(
String
adapterId
)
{
this
.
adapterId
=
adapterId
;
}
public
String
getAdapterName
()
{
return
adapterName
;
}
public
void
setAdapterName
(
String
adapterName
)
{
this
.
adapterName
=
adapterName
;
}
@Override
public
String
toString
()
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
"Apps [id="
);
builder
.
append
(
id
);
builder
.
append
(
", name="
);
builder
.
append
(
name
);
builder
.
append
(
", loginUrl="
);
builder
.
append
(
loginUrl
);
builder
.
append
(
", category="
);
builder
.
append
(
category
);
builder
.
append
(
", protocol="
);
builder
.
append
(
protocol
);
builder
.
append
(
", secret="
);
builder
.
append
(
secret
);
builder
.
append
(
", icon="
);
builder
.
append
(
Arrays
.
toString
(
icon
));
builder
.
append
(
", iconFile="
);
builder
.
append
(
iconFile
);
builder
.
append
(
", visible="
);
builder
.
append
(
visible
);
builder
.
append
(
", inducer="
);
builder
.
append
(
inducer
);
builder
.
append
(
", vendor="
);
builder
.
append
(
vendor
);
builder
.
append
(
", vendorUrl="
);
builder
.
append
(
vendorUrl
);
builder
.
append
(
", credential="
);
builder
.
append
(
credential
);
builder
.
append
(
", sharedUsername="
);
builder
.
append
(
sharedUsername
);
builder
.
append
(
", sharedPassword="
);
builder
.
append
(
sharedPassword
);
builder
.
append
(
", systemUserAttr="
);
builder
.
append
(
systemUserAttr
);
builder
.
append
(
", principal="
);
builder
.
append
(
principal
);
builder
.
append
(
", credentials="
);
builder
.
append
(
credentials
);
builder
.
append
(
", logoutUrl="
);
builder
.
append
(
logoutUrl
);
builder
.
append
(
", logoutType="
);
builder
.
append
(
logoutType
);
builder
.
append
(
", isExtendAttr="
);
builder
.
append
(
isExtendAttr
);
builder
.
append
(
", extendAttr="
);
builder
.
append
(
extendAttr
);
builder
.
append
(
", userPropertys="
);
builder
.
append
(
userPropertys
);
builder
.
append
(
", isSignature="
);
builder
.
append
(
isSignature
);
builder
.
append
(
", isAdapter="
);
builder
.
append
(
isAdapter
);
builder
.
append
(
", adapterId="
);
builder
.
append
(
adapterId
);
builder
.
append
(
", adapterName="
);
builder
.
append
(
adapterName
);
builder
.
append
(
", adapter="
);
builder
.
append
(
adapter
);
builder
.
append
(
", appUser="
);
builder
.
append
(
appUser
);
builder
.
append
(
", sortIndex="
);
builder
.
append
(
sortIndex
);
builder
.
append
(
", status="
);
builder
.
append
(
status
);
builder
.
append
(
", createdBy="
);
builder
.
append
(
createdBy
);
builder
.
append
(
", createdDate="
);
builder
.
append
(
createdDate
);
builder
.
append
(
", modifiedBy="
);
builder
.
append
(
modifiedBy
);
builder
.
append
(
", modifiedDate="
);
builder
.
append
(
modifiedDate
);
builder
.
append
(
", description="
);
builder
.
append
(
description
);
builder
.
append
(
", loginDateTime="
);
builder
.
append
(
loginDateTime
);
builder
.
append
(
", onlineTicket="
);
builder
.
append
(
onlineTicket
);
builder
.
append
(
"]"
);
return
builder
.
toString
();
}
}
maxkey-core/src/main/java/org/maxkey/domain/apps/AppsAdapters.java
0 → 100644
浏览文件 @
21c7c956
/*
* Copyright [2021] [MaxKey of copyright http://www.maxkey.top]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.maxkey.domain.apps
;
import
java.io.Serializable
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
import
org.apache.mybatis.jpa.persistence.JpaBaseDomain
;
@Entity
@Table
(
name
=
"MXK_APPS_ADAPTERS"
)
public
class
AppsAdapters
extends
JpaBaseDomain
implements
Serializable
{
/**
*
*/
private
static
final
long
serialVersionUID
=
-
6264641546959620712L
;
@Id
@Column
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
,
generator
=
"uuid"
)
protected
String
id
;
/**
*
*/
@Column
private
String
name
;
@Column
private
String
protocol
;
@Column
private
String
adapter
;
@Column
protected
int
sortIndex
;
@Column
protected
String
createdBy
;
@Column
protected
String
createdDate
;
@Column
protected
String
modifiedBy
;
@Column
protected
String
modifiedDate
;
@Column
protected
String
description
;
public
AppsAdapters
()
{
}
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getProtocol
()
{
return
protocol
;
}
public
void
setProtocol
(
String
protocol
)
{
this
.
protocol
=
protocol
;
}
public
String
getAdapter
()
{
return
adapter
;
}
public
void
setAdapter
(
String
adapter
)
{
this
.
adapter
=
adapter
;
}
public
int
getSortIndex
()
{
return
sortIndex
;
}
public
void
setSortIndex
(
int
sortIndex
)
{
this
.
sortIndex
=
sortIndex
;
}
public
String
getCreatedBy
()
{
return
createdBy
;
}
public
void
setCreatedBy
(
String
createdBy
)
{
this
.
createdBy
=
createdBy
;
}
public
String
getCreatedDate
()
{
return
createdDate
;
}
public
void
setCreatedDate
(
String
createdDate
)
{
this
.
createdDate
=
createdDate
;
}
public
String
getModifiedBy
()
{
return
modifiedBy
;
}
public
void
setModifiedBy
(
String
modifiedBy
)
{
this
.
modifiedBy
=
modifiedBy
;
}
public
String
getModifiedDate
()
{
return
modifiedDate
;
}
public
void
setModifiedDate
(
String
modifiedDate
)
{
this
.
modifiedDate
=
modifiedDate
;
}
public
String
getDescription
()
{
return
description
;
}
public
void
setDescription
(
String
description
)
{
this
.
description
=
description
;
}
@Override
public
String
toString
()
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
"AppsAdapters [id="
);
builder
.
append
(
id
);
builder
.
append
(
", name="
);
builder
.
append
(
name
);
builder
.
append
(
", protocol="
);
builder
.
append
(
protocol
);
builder
.
append
(
", adapter="
);
builder
.
append
(
adapter
);
builder
.
append
(
", sortIndex="
);
builder
.
append
(
sortIndex
);
builder
.
append
(
", createdBy="
);
builder
.
append
(
createdBy
);
builder
.
append
(
", createdDate="
);
builder
.
append
(
createdDate
);
builder
.
append
(
", modifiedBy="
);
builder
.
append
(
modifiedBy
);
builder
.
append
(
", modifiedDate="
);
builder
.
append
(
modifiedDate
);
builder
.
append
(
", description="
);
builder
.
append
(
description
);
builder
.
append
(
"]"
);
return
builder
.
toString
();
}
}
maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/AccountsMapper.java
浏览文件 @
21c7c956
/*
* Copyright [202
0
] [MaxKey of copyright http://www.maxkey.top]
* Copyright [202
1
] [MaxKey of copyright http://www.maxkey.top]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/AppsAdaptersMapper.java
0 → 100644
浏览文件 @
21c7c956
/*
* Copyright [2021] [MaxKey of copyright http://www.maxkey.top]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
*
*/
package
org.maxkey.persistence.mapper
;
import
org.apache.mybatis.jpa.persistence.IJpaBaseMapper
;
import
org.maxkey.domain.apps.AppsAdapters
;
/**
* @author Crystal.sea
*
*/
public
interface
AppsAdaptersMapper
extends
IJpaBaseMapper
<
AppsAdapters
>
{
}
maxkey-persistence/src/main/java/org/maxkey/persistence/service/AppsAdaptersService.java
0 → 100644
浏览文件 @
21c7c956
/*
* Copyright [2021] [MaxKey of copyright http://www.maxkey.top]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.maxkey.persistence.service
;
import
org.apache.mybatis.jpa.persistence.JpaBaseService
;
import
org.maxkey.domain.apps.AppsAdapters
;
import
org.maxkey.persistence.mapper.AppsAdaptersMapper
;
import
org.springframework.stereotype.Repository
;
@Repository
public
class
AppsAdaptersService
extends
JpaBaseService
<
AppsAdapters
>{
public
AppsAdaptersService
()
{
super
(
AppsAdaptersMapper
.
class
);
}
/* (non-Javadoc)
* @see com.connsec.db.service.BaseService#getMapper()
*/
@Override
public
AppsAdaptersMapper
getMapper
()
{
// TODO Auto-generated method stub
return
(
AppsAdaptersMapper
)
super
.
getMapper
();
}
}
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/AppsAdaptersMapper.xml
0 → 100644
浏览文件 @
21c7c956
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"org.maxkey.persistence.mapper.AppsAdaptersMapper"
>
<sql
id=
"where_statement"
>
<if
test=
"id != null and id != ''"
>
AND ID = #{id}
</if>
<if
test=
"name != null and name != ''"
>
AND NAME LIKE '%${name}%'
</if>
<if
test=
"protocol != null and protocol != ''"
>
AND PROTOCOL = #{protocol}
</if>
</sql>
<select
id=
"queryPageResults"
parameterType=
"AppsAdapters"
resultType=
"AppsAdapters"
>
SELECT
*
FROM
MXK_APPS_ADAPTERS
WHERE
(1=1)
<include
refid=
"where_statement"
/>
ORDER BY SORTINDEX
</select>
</mapper>
\ No newline at end of file
maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/consumer/endpoint/ConsumerEndpoint.java
浏览文件 @
21c7c956
...
...
@@ -187,7 +187,7 @@ public class ConsumerEndpoint {
ModelAndView
mav
=
new
ModelAndView
();
mav
.
addObject
(
"username"
,
username
);
mav
.
setViewName
(
"redirect:/
consumer/saml/v20/forward/webseal/eai
"
);
mav
.
setViewName
(
"redirect:/
appList
"
);
return
mav
;
}
...
...
maxkey-web-manage/src/main/java/org/maxkey/web/apps/contorller/AdaptersController.java
0 → 100644
浏览文件 @
21c7c956
/*
* Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.maxkey.web.apps.contorller
;
import
org.apache.mybatis.jpa.persistence.JpaPageResults
;
import
org.maxkey.constants.ConstantsOperateMessage
;
import
org.maxkey.domain.apps.AppsAdapters
;
import
org.maxkey.persistence.service.AppsAdaptersService
;
import
org.maxkey.web.WebContext
;
import
org.maxkey.web.message.Message
;
import
org.maxkey.web.message.MessageType
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.ModelAttribute
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.servlet.ModelAndView
;
@Controller
@RequestMapping
(
value
={
"/apps/adapters"
})
public
class
AdaptersController
{
final
static
Logger
_logger
=
LoggerFactory
.
getLogger
(
AdaptersController
.
class
);
@Autowired
@Qualifier
(
"appsAdaptersService"
)
AppsAdaptersService
appsAdaptersService
;
@RequestMapping
(
value
={
"/list"
})
public
ModelAndView
rolesList
(){
return
new
ModelAndView
(
"apps/adapters/adaptersList"
);
}
@RequestMapping
(
value
={
"/selectAdaptersList"
})
public
ModelAndView
selectRolesList
(){
return
new
ModelAndView
(
"apps/adapters/selectAdaptersList"
);
}
@RequestMapping
(
value
=
{
"/grid"
})
@ResponseBody
public
JpaPageResults
<
AppsAdapters
>
queryDataGrid
(
@ModelAttribute
(
"appsAdapter"
)
AppsAdapters
appsAdapter
)
{
_logger
.
debug
(
""
+
appsAdapter
);
return
appsAdaptersService
.
queryPageResults
(
appsAdapter
);
}
@RequestMapping
(
value
=
{
"/forwardAdd"
})
public
ModelAndView
forwardAdd
()
{
return
new
ModelAndView
(
"apps/adapters/adapterAdd"
);
}
@RequestMapping
(
value
=
{
"/forwardUpdate/{id}"
})
public
ModelAndView
forwardUpdate
(
@PathVariable
(
"id"
)
String
id
)
{
ModelAndView
modelAndView
=
new
ModelAndView
(
"apps/adapters/adapterUpdate"
);
AppsAdapters
appsAdapter
=
appsAdaptersService
.
get
(
id
);
modelAndView
.
addObject
(
"model"
,
appsAdapter
);
return
modelAndView
;
}
@ResponseBody
@RequestMapping
(
value
={
"/add"
})
public
Message
insert
(
@ModelAttribute
(
"appsAdapter"
)
AppsAdapters
appsAdapter
)
{
_logger
.
debug
(
"-Add :"
+
appsAdapter
);
if
(
appsAdaptersService
.
insert
(
appsAdapter
))
{
return
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
INSERT_SUCCESS
),
MessageType
.
success
);
}
else
{
return
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
INSERT_SUCCESS
),
MessageType
.
error
);
}
}
/**
* 查询
* @param role
* @return
*/
@ResponseBody
@RequestMapping
(
value
={
"/query"
})
public
Message
query
(
@ModelAttribute
(
"appsAdapter"
)
AppsAdapters
appsAdapter
)
{
_logger
.
debug
(
"-query :"
+
appsAdapter
);
if
(
appsAdaptersService
.
load
(
appsAdapter
)!=
null
)
{
return
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
INSERT_SUCCESS
),
MessageType
.
success
);
}
else
{
return
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
INSERT_ERROR
),
MessageType
.
error
);
}
}
/**
* 修改
* @param role
* @return
*/
@ResponseBody
@RequestMapping
(
value
={
"/update"
})
public
Message
update
(
@ModelAttribute
(
"appsAdapter"
)
AppsAdapters
appsAdapter
)
{
_logger
.
debug
(
"-update appsAdapter :"
+
appsAdapter
);
if
(
appsAdaptersService
.
update
(
appsAdapter
))
{
return
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
UPDATE_SUCCESS
),
MessageType
.
success
);
}
else
{
return
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
UPDATE_ERROR
),
MessageType
.
error
);
}
}
@ResponseBody
@RequestMapping
(
value
={
"/delete"
})
public
Message
delete
(
@ModelAttribute
(
"appsAdapter"
)
AppsAdapters
appsAdapter
)
{
_logger
.
debug
(
"-delete appsAdapter :"
+
appsAdapter
);
if
(
appsAdaptersService
.
remove
(
appsAdapter
.
getId
()))
{
return
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
DELETE_SUCCESS
),
MessageType
.
success
);
}
else
{
return
new
Message
(
WebContext
.
getI18nValue
(
ConstantsOperateMessage
.
DELETE_SUCCESS
),
MessageType
.
error
);
}
}
}
maxkey-web-manage/src/main/resources/messages/message.properties
浏览文件 @
21c7c956
...
...
@@ -28,6 +28,7 @@ common.grid.loadtext=\u6b63\u5728\u52a0\u8f7d...
common.grid.loadnodata
=
\u
6ca1
\u6709\u
67e5
\u
8be2
\u5230\u
7b26
\u5408\u6570\u
636e
common.submit.hintText
=
\u
60a8
\u
786e
\u
5b9a
\u8981\u
8fdb
\u
884c
\u
6b64
\u9879\u
64cd
\u
4f5c
\u5417
?
common.submit.errorText
=
\u6267\u
884c
\u
64cd
\u
4f5c
\u5931\u
8d25
common.text.id
=
\u
7F16
\u
53F7
common.text.startdate
=
\u
5f00
\u
59cb
\u
65f6
\u
95f4
common.text.enddate
=
\u
7ed3
\u
675f
\u
65f6
\u
95f4
common.text.createdby
=
\u
521b
\u
5efa
\u
4eba
...
...
@@ -307,6 +308,11 @@ apps.extendAttr.parameter.value=\u503c
apps.principal
=
\u
51ed
\u
8bc1
apps.credentials
=
\u
79d8
\u
94a5
#adapter
apps.adapter.name
=
\u
540D
\u
79F0
apps.adapter.adapter
=
\u9002\u
914D
\u5668
apps.adapter.protocol
=
\u
534F
\u
8BAE
#formbased
apps.formbased.info
=
\u8868\u5355\u
8ba4
\u
8bc1
apps.formbased.redirectUri
=
\u
8ba4
\u
8bc1
\u5730\u5740
...
...
@@ -538,3 +544,4 @@ navs.roles=\u89d2\u8272\u7ba1\u7406
navs.role.member
=
\u
89d2
\u8272\u7528\u6237
navs.role.permissions
=
\u
89d2
\u8272\u6743\u9650\u
7ba1
\u7406
navs.resources
=
\u
8d44
\u
6e90
\u
7ba1
\u7406
navs.adapters
=
\u9002\u
914D
\u5668\u
6CE8
\u
518C
\ No newline at end of file
maxkey-web-manage/src/main/resources/messages/message_en.properties
浏览文件 @
21c7c956
...
...
@@ -28,6 +28,7 @@ common.grid.loadtext=Data loading ...
common.grid.loadnodata
=
No matching data found
common.submit.hintText
=
Are you sure you want to do this?
common.submit.errorText
=
Failed to perform operation
common.text.id
=
Id
common.text.startdate
=
StartDate
common.text.enddate
=
EndDate
common.text.createdby
=
CreatedBy
...
...
@@ -307,6 +308,11 @@ apps.extendAttr.parameter.value=value
apps.principal
=
principal
apps.credentials
=
credentials
#adapter
apps.adapter.name
=
name
apps.adapter.adapter
=
adapter
apps.adapter.protocol
=
protocol
#formbased
apps.formbased.info
=
formbased Info
apps.formbased.redirectUri
=
redirectUri
...
...
@@ -537,4 +543,5 @@ navs.audit.operate=Operate
navs.roles
=
Roles
navs.role.member
=
RoleMember
navs.role.permissions
=
Permissions
navs.resources
=
Resources
\ No newline at end of file
navs.resources
=
Resources
navs.adapters
=
Adapters
\ No newline at end of file
maxkey-web-manage/src/main/resources/messages/message_zh_CN.properties
浏览文件 @
21c7c956
...
...
@@ -28,6 +28,7 @@ common.grid.loadtext=\u6b63\u5728\u52a0\u8f7d...
common.grid.loadnodata
=
\u
6ca1
\u6709\u
67e5
\u
8be2
\u5230\u
7b26
\u5408\u6570\u
636e
common.submit.hintText
=
\u
60a8
\u
786e
\u
5b9a
\u8981\u
8fdb
\u
884c
\u
6b64
\u9879\u
64cd
\u
4f5c
\u5417
?
common.submit.errorText
=
\u6267\u
884c
\u
64cd
\u
4f5c
\u5931\u
8d25
common.text.id
=
\u
7F16
\u
53F7
common.text.startdate
=
\u
5f00
\u
59cb
\u
65f6
\u
95f4
common.text.enddate
=
\u
7ed3
\u
675f
\u
65f6
\u
95f4
common.text.createdby
=
\u
521b
\u
5efa
\u
4eba
...
...
@@ -307,6 +308,10 @@ apps.extendAttr.parameter.value=\u503c
apps.principal
=
\u
51ed
\u
8bc1
apps.credentials
=
\u
79d8
\u
94a5
apps.adapter.name
=
\u
540D
\u
79F0
apps.adapter.adapter
=
\u9002\u
914D
\u5668
apps.adapter.protocol
=
\u
534F
\u
8BAE
#formbased
apps.formbased.info
=
\u8868\u5355\u
8ba4
\u
8bc1
apps.formbased.redirectUri
=
\u
8ba4
\u
8bc1
\u5730\u5740
...
...
@@ -539,3 +544,4 @@ navs.roles=\u89d2\u8272\u7ba1\u7406
navs.role.member
=
\u
89d2
\u8272\u7528\u6237
navs.role.permissions
=
\u
89d2
\u8272\u6743\u9650\u
7ba1
\u7406
navs.resources
=
\u
8d44
\u
6e90
\u
7ba1
\u7406
navs.adapters
=
\u9002\u
914D
\u5668\u
6CE8
\u
518C
maxkey-web-manage/src/main/resources/templates/views/apps/adapters/adapterAdd.ftl
0 → 100644
浏览文件 @
21c7c956
<!DOCTYPE HTML>
<html
xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<
#include
"../../
layout
/
header.ftl
"
/>
<
#include
"../../
layout
/
common.cssjs.ftl
"
/>
<style
type=
"text/css"
>
.table
th
,
.table
td
{
padding
:
.2rem
;
vertical-align
:
middle
;
}
</style>
<script
type=
"text/javascript"
>
</script>
</head>
<body>
<form
id=
"actionForm"
method=
"post"
type=
"label"
autoclose=
"true"
action=
"<@base/>/apps/adapters/add"
class=
"needs-validation"
novalidate
>
<table
border=
"0"
cellpadding=
"0"
cellspacing=
"0"
class=
"table table-bordered"
>
<tbody>
<tr>
<th><
@
locale
code=
"common.text.id"
/>
:
</th>
<td
nowrap
>
<input
type=
"text"
id=
"id"
name=
"id"
class=
"form-control"
title=
""
value=
""
/>
</td>
</tr>
<tr>
<th><
@
locale
code=
"apps.adapter.name"
/>
:
</th>
<td
nowrap
>
<input
type=
"text"
id=
"name"
name=
"name"
class=
"form-control"
title=
""
value=
""
required=
""
/>
</td>
</tr>
<tr>
<th><
@
locale
code=
"apps.adapter.protocol"
/>
:
</th>
<td
nowrap
>
<select
name=
"protocol"
class=
"form-control"
>
<option
value=
""
selected
>
Select
</option>
<option
value=
"OAuth_v2.0"
><
@
locale
code=
"apps.protocol.oauth2.0"
/></option>
<option
value=
"SAML_v2.0"
><
@
locale
code=
"apps.protocol.saml2.0"
/></option>
<option
value=
"CAS"
><
@
locale
code=
"apps.protocol.cas"
/></option>
<option
value=
"JWT"
><
@
locale
code=
"apps.protocol.jwt"
/></option>
<option
value=
"Token_Based"
><
@
locale
code=
"apps.protocol.tokenbased"
/></option>
<option
value=
"Extend_API"
><
@
locale
code=
"apps.protocol.extendapi"
/></option>
<option
value=
"Form_Based"
><
@
locale
code=
"apps.protocol.formbased"
/></option>
</select>
</td>
</tr>
<tr>
<th><
@
locale
code=
"apps.adapter.adapter"
/>
:
</th>
<td
nowrap
>
<input
type=
"text"
id=
"adapter"
name=
"adapter"
class=
"form-control"
title=
""
value=
""
required=
""
/>
</td>
</tr>
<tr>
<th><
@
locale
code=
"common.text.sortindex"
/></th>
<td>
<input
type=
"text"
id=
"sortIndex"
class=
"form-control"
name=
"sortIndex"
title=
""
value=
"1"
required=
""
/>
</td>
</tr>
<tr>
<th><
@
locale
code=
"common.text.description"
/>
:
</th>
<td
nowrap
>
<textarea
id=
"description"
name=
"description"
class=
"form-control"
rows=
"2"
cols=
"20"
></textarea>
</td>
</tr>
<tr>
<td
nowrap
colspan=
"2"
class=
"center"
>
<input
id=
"_method"
type=
"hidden"
name=
"_method"
value=
"post"
/>
<input
id=
"status"
type=
"hidden"
name=
"status"
value=
"1"
/>
<input
class=
"button btn btn-primary mr-3"
id=
"submitBtn"
type=
"submit"
value=
"<@locale code="
button.text.save
"
/>
">
<input
class=
"button btn btn-secondary mr-3"
id=
"closeBtn"
type=
"button"
value=
"<@locale code="
button.text.cancel
"
/>
">
</td>
</tr>
</tbody>
</table>
</form>
<div
id=
"orgContent"
class=
"menuContent"
style=
"display:none; position: absolute;"
>
<ul
id=
"orgsTree"
class=
"ztree"
style=
"margin-top:0; width:180px; height: 300px;"
></ul>
</div>
</body>
</html>
\ No newline at end of file
maxkey-web-manage/src/main/resources/templates/views/apps/adapters/adapterUpdate.ftl
0 → 100644
浏览文件 @
21c7c956
<!DOCTYPE HTML>
<html
xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<
#include
"../../
layout
/
header.ftl
"
/>
<
#include
"../../
layout
/
common.cssjs.ftl
"
/>
<style
type=
"text/css"
>
.table
th
,
.table
td
{
padding
:
.2rem
;
vertical-align
:
middle
;
}
</style>
<script
type=
"text/javascript"
>
</script>
</head>
<body>
<form
id=
"actionForm"
method=
"post"
type=
"label"
autoclose=
"true"
action=
"<@base/>/apps/adapters/update"
class=
"needs-validation"
novalidate
>
<table
border=
"0"
cellpadding=
"0"
cellspacing=
"0"
class=
"table table-bordered"
>
<tbody>
<tr>
<th><
@
locale
code=
"common.text.id"
/>
:
</th>
<td
nowrap
>
<input
id=
"id"
type=
"text"
readonly
name=
"id"
class=
"form-control"
value=
"${model.id}"
/>
</td>
</tr>
<tr>
<th><
@
locale
code=
"apps.adapter.name"
/>
:
</th>
<td
nowrap
>
<input
type=
"text"
id=
"name"
name=
"name"
class=
"form-control"
title=
""
value=
"${model.name!}"
required=
""
/>
</td>
</tr>
<tr>
<th><
@
locale
code=
"apps.adapter.protocol"
/>
:
</th>
<td
nowrap
>
<input
type=
"text"
readonly
id=
"protocol"
name=
"protocol"
class=
"form-control"
title=
""
value=
"${model.protocol!}"
required=
""
/>
</td>
</tr>
<tr>
<th><
@
locale
code=
"apps.adapter.adapter"
/>
:
</th>
<td
nowrap
>
<input
type=
"text"
id=
"adapter"
name=
"adapter"
class=
"form-control"
title=
""
value=
"${model.adapter!}"
required=
""
/>
</td>
</tr>
<tr>
<th><
@
locale
code=
"common.text.sortindex"
/></th>
<td>
<input
type=
"text"
id=
"sortIndex"
class=
"form-control"
name=
"sortIndex"
title=
""
value=
"${model.sortIndex!}"
required=
""
/>
</td>
</tr>
<tr>
<th><
@
locale
code=
"common.text.description"
/>
:
</th>
<td
nowrap
>
<textarea
id=
"description"
name=
"description"
class=
"form-control"
rows=
"2"
cols=
"20"
>
${model.description!}
</textarea>
</td>
</tr>
<tr>
<td
nowrap
colspan=
"2"
class=
"center"
>
<input
id=
"_method"
type=
"hidden"
name=
"_method"
value=
"post"
/>
<input
id=
"status"
type=
"hidden"
name=
"status"
value=
"1"
/>
<input
class=
"button btn btn-primary mr-3"
id=
"submitBtn"
type=
"submit"
value=
"<@locale code="
button.text.save
"
/>
">
<input
class=
"button btn btn-secondary mr-3"
id=
"closeBtn"
type=
"button"
value=
"<@locale code="
button.text.cancel
"
/>
">
</td>
</tr>
</tbody>
</table>
</form>
<div
id=
"orgContent"
class=
"menuContent"
style=
"display:none; position: absolute;"
>
<ul
id=
"orgsTree"
class=
"ztree"
style=
"margin-top:0; width:180px; height: 300px;"
></ul>
</div>
</body>
</html>
\ No newline at end of file
maxkey-web-manage/src/main/resources/templates/views/apps/adapters/adaptersList.ftl
0 → 100644
浏览文件 @
21c7c956
<!DOCTYPE HTML>
<html
xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<
#include
"../../
layout
/
header.ftl
"
/>
<
#include
"../../
layout
/
common.cssjs.ftl
"
/>
<script
type=
"text/javascript"
>
function
dynamicFormatter
(
value
,
row
,
index
){
return
value
==
'
0
'
?
'
<@locale code="common.text.no" />
'
:
'
<@locale code="common.text.yes" />
'
;
};
</script>
</head>
<body>
<div
class=
"app header-default side-nav-dark"
>
<div
class=
"layout"
>
<div
class=
"header navbar"
>
<
#include
"../../
layout
/
top.ftl
"
/>
</div>
<div
class=
"col-md-3 sidebar-nav side-nav"
>
<
#include
"../../
layout
/
sidenav.ftl
"
/>
</div>
<div
class=
"page-container"
>
<div
class=
"main-content"
>
<div
class=
"container-fluid"
>
<div
class=
"breadcrumb-wrapper row"
>
<div
class=
"col-12 col-lg-3 col-md-6"
>
<h4
class=
"page-title"
><
@
locale
code=
"navs.adapters"
/></h4>
</div>
<div
class=
"col-12 col-lg-9 col-md-6"
>
<ol
class=
"breadcrumb float-right"
>
<li><a
href=
"<@base/>/main"
><
@
locale
code=
"navs.home"
/></a></li>
<li
class=
"active"
>
/
<
@
locale
code=
"navs.adapters"
/></li>
</ol>
</div>
</div>
</div>
<div
class=
"container-fluid"
>
<div
class=
"content-wrapper row"
>
<div
class=
"col-12 grid-margin"
>
<div
class=
"card"
>
<div
class=
"card-body"
>
<table
class=
"table table-bordered"
>
<tr>
<td
width=
"120px"
><
@
locale
code=
"apps.adapter.name"
/>
:
</td>
<td
width=
"375px"
>
<form
id=
"basic_search_form"
>
<input
class=
"form-control"
type=
"text"
name=
"name"
style =
"width:150px;float:left;"
>
<input
class=
"button btn btn-primary mr-3"
id=
"searchBtn"
type=
"button"
size=
"50"
value=
"<@locale code="
button.text.search
"
/>
">
<!--<input class="button btn btn-secondary" id="advancedSearchExpandBtn" type="button" size="50" value="<@locale code="button.text.expandsearch"/>" expandValue="<@locale code="button.text.expandsearch"/>" collapseValue="<@locale code="button.text.collapsesearch"/>">
-->
</form>
</td>
<td
colspan=
"2"
>
<div
id=
"tool_box_right"
>
<input
class=
"button btn btn-success mr-3"
id=
"addBtn"
type=
"button"
value=
"<@locale code="
button.text.add
"
/>
"
wurl="
<
@
base
/>
/apps/adapters/forwardAdd"
wwidth="700"
wheight="350"
target="window">
<input
class=
"button btn btn-info mr-3 "
id=
"modifyBtn"
type=
"button"
value=
"<@locale code="
button.text.edit
"
/>
"
wurl="
<
@
base
/>
/apps/adapters/forwardUpdate"
wwidth="700"
wheight="350"
target="window">
<input
class=
"button btn btn-danger mr-3 "
id=
"deleteBtn"
type=
"button"
value=
"<@locale code="
button.text.delete
"
/>
"
wurl="
<
@
base
/>
/apps/adapters/delete" />
</div>
</td>
</tr>
</table>
</div>
<div
id=
"advanced_search"
>
<form
id=
"advanced_search_form"
>
</form>
</div>
<table
data-url=
"<@base/>/apps/adapters/grid"
id=
"datagrid"
data-toggle=
"table"
data-classes=
"table table-bordered table-hover table-striped"
data-click-to-select=
"true"
data-pagination=
"true"
data-total-field=
"records"
data-page-list=
"[10, 25, 50, 100]"
data-search=
"false"
data-locale=
"zh-CN"
data-query-params=
"dataGridQueryParams"
data-query-params-type=
"pageSize"
data-side-pagination=
"server"
>
<thead>
<tr>
<th
data-checkbox=
"true"
></th>
<th
data-sortable=
"true"
data-field=
"id"
data-visible=
"false"
>
Id
</th>
<th
data-field=
"name"
><
@
locale
code=
"apps.adapter.name"
/></th>
<th
data-field=
"protocol"
><
@
locale
code=
"apps.adapter.protocol"
/></th>
<th
data-field=
"description"
><
@
locale
code=
"common.text.description"
/></th>
<th
data-field=
"createdBy"
data-visible=
"false"
><
@
locale
code=
"common.text.createdby"
/></th>
<th
data-field=
"createdDate"
data-visible=
"false"
><
@
locale
code=
"common.text.createddate"
/></th>
<th
data-field=
"modifiedBy"
data-visible=
"false"
><
@
locale
code=
"common.text.modifiedby"
/></th>
<th
data-field=
"modifiedDate"
data-visible=
"false"
><
@
locale
code=
"common.text.modifieddate"
/></th>
</tr>
</thead>
</table>
</div>
</div>
</div>
<footer
class=
"content-footer"
>
<
#include
"../../
layout
/
footer.ftl
"
/>
</footer>
</div>
</div>
</div>
<div
id=
"preloader"
>
<div
class=
"loader"
id=
"loader-1"
></div>
</div>
</body>
</html>
\ No newline at end of file
maxkey-web-manage/src/main/resources/templates/views/apps/adapters/selectAdaptersList.ftl
0 → 100644
浏览文件 @
21c7c956
<!DOCTYPE HTML>
<html
xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<
#include
"../../
layout
/
header.ftl
"
/>
<
#include
"../../
layout
/
common.cssjs.ftl
"
/>
<style
type=
"text/css"
>
.table
th
,
.table
td
{
padding
:
.2rem
;
vertical-align
:
middle
;
}
</style>
<script
type=
"text/javascript"
>
$
(
function
()
{
$
(
"
#selectBtn
"
).
on
(
"
click
"
,
function
(){
var
seldata
=
$
.
dataGridSelRowsData
(
"
#datagrid
"
);
console
.
log
(
seldata
[
0
].
id
+
"
-
"
+
seldata
[
0
].
name
);
$
(
"
#adapterId
"
,
window
.
parent
.
document
).
val
(
seldata
[
0
].
id
);
$
(
"
#adapterName
"
,
window
.
parent
.
document
).
val
(
seldata
[
0
].
name
);
$
(
"
#adapter
"
,
window
.
parent
.
document
).
val
(
seldata
[
0
].
adapter
);
$
.
closeWindow
();
});
});
</script>
</head>
<body>
<div
id=
"tool_box"
>
<table
class=
"datatable"
>
<tr>
<td
width=
"120px"
><
@
locale
code=
"role.name"
/>
:
</td>
<td
width=
"374px"
>
<form
id=
"basic_search_form"
>
<input
class=
"form-control"
type=
"text"
name=
"name"
style =
"width:150px;float: left;"
>
<input
class=
"button btn btn-success mr-3"
id=
"searchBtn"
type=
"button"
size=
"50"
value=
"<@locale code="
button.text.search
"
/>
">
</form>
</td>
<td
colspan=
"2"
>
<div
id=
"tool_box_right"
style=
"width: auto;"
>
<input
class=
"button btn btn-primary mr-3"
id=
"selectBtn"
type=
"button"
value=
"<@locale code="
button.text.select
"
/>
" >
</div>
</td>
</tr>
</table>
</div>
<div
class=
"mainwrap"
id=
"main"
>
<table
data-url=
"<@base/>/apps/adapters/grid"
id=
"datagrid"
data-toggle=
"table"
data-classes=
"table table-bordered table-hover table-striped"
data-click-to-select=
"true"
data-pagination=
"true"
data-total-field=
"records"
data-page-list=
"[10, 25, 50, 100]"
data-search=
"false"
data-locale=
"zh-CN"
data-query-params=
"dataGridQueryParams"
data-query-params-type=
"pageSize"
data-side-pagination=
"server"
>
<thead>
<tr>
<th
data-checkbox=
"true"
></th>
<th
data-sortable=
"true"
data-field=
"id"
data-visible=
"1false"
><
@
locale
code=
"common.text.id"
/></th>
<th
data-field=
"name"
><
@
locale
code=
"apps.adapter.name"
/></th>
<th
data-field=
"protocol"
><
@
locale
code=
"apps.adapter.protocol"
/></th>
<th
data-field=
"adapter"
data-visible=
"false"
><
@
locale
code=
"apps.adapter.adapter"
/></th>
<th
data-field=
"description"
><
@
locale
code=
"common.text.description"
/></th>
<th
data-field=
"createdBy"
data-visible=
"false"
><
@
locale
code=
"common.text.createdby"
/></th>
<th
data-field=
"createdDate"
data-visible=
"false"
><
@
locale
code=
"common.text.createddate"
/></th>
<th
data-field=
"modifiedBy"
data-visible=
"false"
><
@
locale
code=
"common.text.modifiedby"
/></th>
<th
data-field=
"modifiedDate"
data-visible=
"false"
><
@
locale
code=
"common.text.modifieddate"
/></th>
</tr>
</thead>
</table>
</div>
</body>
</html>
\ No newline at end of file
maxkey-web-manage/src/main/resources/templates/views/apps/appAddCommon.ftl
浏览文件 @
21c7c956
...
...
@@ -97,14 +97,25 @@
<option value="1"><@locale code="apps.isAdapter.yes" /></option>
</select>
</td>
<th><@locale code="apps.adapter" />:</th>
<td >
<input type="hidden" class="form-control" id="adapterId" name="adapterId" title="" value=""/>
<input type="text" class="form-control" id="adapterName" name="adapterName" title="" value="" style="width: 80%;float: left;"/>
<input type="hidden" class="form-control" id="adapter" name="adapter" title="" value=""/>
<input class="button btn btn-success mr-3 window" style="float: left;" id="selectAdaptersBtn" type="button"
value="<@locale code="button.text.select"/>"
wurl="<@base/>/apps/adapters/selectAdaptersList"
wwidth="750"
wheight="600"
target="window">
</td>
</tr>
<tr>
<th><@locale code="apps.adapter"
/>:</th>
<td colspan =3>
<input type="text" class="form-control" id="adapter" name="adapter
" title="" value=""/>
</td>
</tr>
<th><@locale code="common.text.description"
/>:</th>
<td colspan =3>
<input type="text" class="form-control" id="description" name="description
" title="" value=""/>
</td>
</tr>
</tbody>
</table>
maxkey-web-manage/src/main/resources/templates/views/apps/appUpdateCommon.ftl
浏览文件 @
21c7c956
...
...
@@ -100,13 +100,18 @@
<option value="1" <#if 1==model.isAdapter>selected</#if> ><@locale code="apps.isAdapter.yes"/></option>
</select>
</td>
<td >
</td>
</tr>
<tr>
<th><@locale code="apps.adapter" />:</th>
<td colspan =3>
<input type="text" class="form-control" id="adapter" name="adapter" title="" value="${model.adapter!}"/>
<td>
<input type="hidden" class="form-control" id="adapterId" name="adapterId" title="" value="${model.adapterId!}"/>
<input type="text" class="form-control" id="adapterName" name="adapterName" title="" value="${model.adapterName!}" style="width: 80%;float: left;"/>
<input type="hidden" class="form-control" id="adapter" name="adapter" title="" value="${model.adapter!}"/>
<input class="button btn btn-success mr-3 window" style="float: left;" id="selectAdaptersBtn" type="button"
value="<@locale code="button.text.select"/>"
wurl="<@base/>/apps/adapters/selectAdaptersList"
wwidth="750"
wheight="600"
target="window">
</td>
</tr>
<tr>
...
...
maxkey-web-manage/src/main/resources/templates/views/apps/appsList.ftl
浏览文件 @
21c7c956
...
...
@@ -160,14 +160,13 @@
<td
width=
"374px"
>
<select
name=
"protocol"
class=
"form-control"
>
<option
value=
""
selected
>
Select
</option>
<option
value=
"<%=PROTOCOLS.FORMBASED%>"
><
%=
PROTOCOLS.FORMBASED
%
></option>
<option
value=
"<%=PROTOCOLS.OPEN_ID_CONNECT%>"
><
%=
PROTOCOLS.OPEN_ID_CONNECT
%
></option>
<option
value=
"<%=PROTOCOLS.OAUTH20%>"
><
%=
PROTOCOLS.OAUTH20
%
></option>
<option
value=
"<%=PROTOCOLS.SAML20%>"
><
%=
PROTOCOLS.SAML20
%
></option>
<option
value=
"<%=PROTOCOLS.TOKENBASED%>"
><
%=
PROTOCOLS.TOKENBASED
%
></option>
<option
value=
"<%=PROTOCOLS.DESKTOP%>"
><
%=
PROTOCOLS.DESKTOP
%
></option>
<option
value=
"<%=PROTOCOLS.BASIC%>"
><
%=
PROTOCOLS.BASIC
%
></option>
<option
value=
"OAuth_v2.0"
><
@
locale
code=
"apps.protocol.oauth2.0"
/></option>
<option
value=
"SAML_v2.0"
><
@
locale
code=
"apps.protocol.saml2.0"
/></option>
<option
value=
"CAS"
><
@
locale
code=
"apps.protocol.cas"
/></option>
<option
value=
"JWT"
><
@
locale
code=
"apps.protocol.jwt"
/></option>
<option
value=
"Token_Based"
><
@
locale
code=
"apps.protocol.tokenbased"
/></option>
<option
value=
"Extend_API"
><
@
locale
code=
"apps.protocol.extendapi"
/></option>
<option
value=
"Form_Based"
><
@
locale
code=
"apps.protocol.formbased"
/></option>
</select>
</td>
<td
width=
"120px"
><
@
locale
code=
"apps.vendor"
/></td>
...
...
maxkey-web-manage/src/main/resources/templates/views/layout/sidenav.ftl
浏览文件 @
21c7c956
...
...
@@ -64,6 +64,7 @@
<span class="fa fa-fw fa-cogs fa-lg"></span>
</a>
<ul>
<li>
<a class="side-nav-menu" href="<@base />/roles/list/">
<@locale code="navs.roles"/>
...
...
@@ -88,6 +89,12 @@
<span class="fa fa-fw fa-check-square"></span>
</a>
</li>
<li>
<a class="side-nav-menu" href="<@base />/apps/adapters/list/">
<@locale code="navs.adapters"/>
<span class="fa fa-fw fa-shield"></span>
</a>
</li>
<li>
<a class="side-nav-menu" href="<@base />/config/passwordpolicy/forward/">
<@locale code="navs.conf.passwordpolicy"/>
...
...
maxkey-web-maxkey/src/main/resources/application.properties
浏览文件 @
21c7c956
...
...
@@ -3,5 +3,5 @@ application.title=MaxKey
application.name
=
MaxKey
application.formatted-version
=
v2.7.0 GA
spring.profiles.active
=
http
#spring.profiles.active=http
spring.profiles.active
=
https
\ No newline at end of file
maxkey-web-maxkey/src/main/resources/maxkey.properties
浏览文件 @
21c7c956
...
...
@@ -2,9 +2,10 @@
# MaxKey
############################################################################
# domain name configuration
config.server.scheme
=
http
config.server.basedomain
=
maxkey.top
config.server.domain
=
sso.${config.server.basedomain}
config.server.name
=
https
://${config.server.domain}
config.server.name
=
${config.server.scheme}
://${config.server.domain}
config.server.uri
=
${config.server.name}/maxkey
#default.uri
config.server.default.uri
=
${config.server.uri}/maxkey/appList
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录