Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MaxKey单点登录官方(MaxKeyTop)
MaxKey
提交
0b441c16
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 搜索 >>
提交
0b441c16
编写于
11月 01, 2020
作者:
S
stevenBeLove
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://github.com/MaxKeyTop/MaxKey
上级
f4fd7a94
972eaea1
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
89 addition
and
23 deletion
+89
-23
ReleaseNotes.txt
ReleaseNotes.txt
+4
-1
maxkey-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java
...java/org/maxkey/authn/AbstractAuthenticationProvider.java
+10
-0
maxkey-core/src/main/java/org/maxkey/authn/BasicAuthentication.java
...e/src/main/java/org/maxkey/authn/BasicAuthentication.java
+9
-7
maxkey-core/src/main/java/org/maxkey/authn/RealmAuthenticationProvider.java
...in/java/org/maxkey/authn/RealmAuthenticationProvider.java
+17
-1
maxkey-web-manage/src/main/java/org/maxkey/web/interceptor/PermissionAdapter.java
...in/java/org/maxkey/web/interceptor/PermissionAdapter.java
+17
-8
maxkey-web-manage/src/main/resources/templates/views/groupapp/groupAppsList.ftl
...main/resources/templates/views/groupapp/groupAppsList.ftl
+4
-0
maxkey-web-manage/src/main/resources/templates/views/groupuser/groupUsersList.ftl
...in/resources/templates/views/groupuser/groupUsersList.ftl
+5
-1
maxkey-web-manage/src/main/resources/templates/views/resources/resourceAdd.ftl
.../main/resources/templates/views/resources/resourceAdd.ftl
+8
-0
maxkey-web-manage/src/main/resources/templates/views/roleusers/roleUsersList.ftl
...ain/resources/templates/views/roleusers/roleUsersList.ftl
+4
-0
maxkey-web-manage/src/main/resources/templates/views/userinfo/userAdd.ftl
...e/src/main/resources/templates/views/userinfo/userAdd.ftl
+2
-1
maxkey-web-manage/src/main/resources/templates/views/userinfo/usersList.ftl
...src/main/resources/templates/views/userinfo/usersList.ftl
+7
-3
maxkey-web-maxkey/src/main/resources/templates/views/layout/top.ftl
...-maxkey/src/main/resources/templates/views/layout/top.ftl
+2
-1
sql/oldversions/maxkey_v2.2.0.GA.sql
sql/oldversions/maxkey_v2.2.0.GA.sql
+0
-0
未找到文件。
ReleaseNotes.txt
浏览文件 @
0b441c16
...
@@ -9,7 +9,10 @@
...
@@ -9,7 +9,10 @@
*(MAXKEY-200908) 应用修改时数字大于4为长度格式化问题
*(MAXKEY-200908) 应用修改时数字大于4为长度格式化问题
*(MAXKEY-200910) 注销后,点击重新登陆跳转问题
*(MAXKEY-200910) 注销后,点击重新登陆跳转问题
*(MAXKEY-200911) 增加SP登录跳转功能,支持knox的认证
*(MAXKEY-200911) 增加SP登录跳转功能,支持knox的认证
*(MAXKEY-200912) 构建脚本的优化和更新
*(MAXKEY-200912) 构建脚本的优化和更新
*(MAXKEY-200913) 权限控制 RoleAdministrators
*(MAXKEY-200914) 社交账号登录优化
*(MAXKEY-200915) 列表界面中未”选择“情况下,弹出界面错误
*(MAXKEY-200920) 依赖jar引用、更新和升级
*(MAXKEY-200920) 依赖jar引用、更新和升级
druid 1.2.1
druid 1.2.1
JustAuth 1.15.8
JustAuth 1.15.8
...
...
maxkey-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java
浏览文件 @
0b441c16
...
@@ -17,6 +17,8 @@
...
@@ -17,6 +17,8 @@
package
org.maxkey.authn
;
package
org.maxkey.authn
;
import
java.util.ArrayList
;
import
org.maxkey.authn.online.OnlineTicketServices
;
import
org.maxkey.authn.online.OnlineTicketServices
;
import
org.maxkey.authn.realm.AbstractAuthenticationRealm
;
import
org.maxkey.authn.realm.AbstractAuthenticationRealm
;
import
org.maxkey.authn.support.rememberme.AbstractRemeberMeService
;
import
org.maxkey.authn.support.rememberme.AbstractRemeberMeService
;
...
@@ -35,6 +37,8 @@ import org.springframework.security.authentication.BadCredentialsException;
...
@@ -35,6 +37,8 @@ import org.springframework.security.authentication.BadCredentialsException;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
import
org.springframework.security.core.Authentication
;
import
org.springframework.security.core.Authentication
;
import
org.springframework.security.core.AuthenticationException
;
import
org.springframework.security.core.AuthenticationException
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.security.core.authority.SimpleGrantedAuthority
;
/**
/**
* login Authentication abstract class.
* login Authentication abstract class.
...
@@ -65,6 +69,12 @@ public abstract class AbstractAuthenticationProvider {
...
@@ -65,6 +69,12 @@ public abstract class AbstractAuthenticationProvider {
@Autowired
@Autowired
@Qualifier
(
"onlineTicketServices"
)
@Qualifier
(
"onlineTicketServices"
)
protected
OnlineTicketServices
onlineTicketServices
;
protected
OnlineTicketServices
onlineTicketServices
;
static
ArrayList
<
GrantedAuthority
>
grantedAdministratorsAuthoritys
=
new
ArrayList
<
GrantedAuthority
>();
static
{
grantedAdministratorsAuthoritys
.
add
(
new
SimpleGrantedAuthority
(
"ROLE_ADMINISTRATORS"
));
}
protected
abstract
String
getProviderName
();
protected
abstract
String
getProviderName
();
...
...
maxkey-core/src/main/java/org/maxkey/authn/BasicAuthentication.java
浏览文件 @
0b441c16
...
@@ -23,7 +23,6 @@ import java.util.Collection;
...
@@ -23,7 +23,6 @@ import java.util.Collection;
import
org.maxkey.authn.online.OnlineTicket
;
import
org.maxkey.authn.online.OnlineTicket
;
import
org.springframework.security.core.Authentication
;
import
org.springframework.security.core.Authentication
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.security.core.authority.SimpleGrantedAuthority
;
public
class
BasicAuthentication
implements
Authentication
{
public
class
BasicAuthentication
implements
Authentication
{
...
@@ -39,14 +38,12 @@ public class BasicAuthentication implements Authentication {
...
@@ -39,14 +38,12 @@ public class BasicAuthentication implements Authentication {
OnlineTicket
onlineTicket
;
OnlineTicket
onlineTicket
;
ArrayList
<
GrantedAuthority
>
grantedAuthority
;
ArrayList
<
GrantedAuthority
>
grantedAuthority
;
boolean
authenticated
;
boolean
authenticated
;
boolean
roleAdministrators
;
/**
/**
* BasicAuthentication.
* BasicAuthentication.
*/
*/
public
BasicAuthentication
()
{
public
BasicAuthentication
()
{
grantedAuthority
=
new
ArrayList
<
GrantedAuthority
>();
grantedAuthority
.
add
(
new
SimpleGrantedAuthority
(
"ROLE_USER"
));
grantedAuthority
.
add
(
new
SimpleGrantedAuthority
(
"ORDINARY_USER"
));
}
}
/**
/**
...
@@ -56,9 +53,6 @@ public class BasicAuthentication implements Authentication {
...
@@ -56,9 +53,6 @@ public class BasicAuthentication implements Authentication {
this
.
username
=
username
;
this
.
username
=
username
;
this
.
password
=
password
;
this
.
password
=
password
;
this
.
authType
=
authType
;
this
.
authType
=
authType
;
grantedAuthority
=
new
ArrayList
<
GrantedAuthority
>();
grantedAuthority
.
add
(
new
SimpleGrantedAuthority
(
"ROLE_USER"
));
grantedAuthority
.
add
(
new
SimpleGrantedAuthority
(
"ORDINARY_USER"
));
}
}
@Override
@Override
public
String
getName
()
{
public
String
getName
()
{
...
@@ -177,6 +171,14 @@ public class BasicAuthentication implements Authentication {
...
@@ -177,6 +171,14 @@ public class BasicAuthentication implements Authentication {
this
.
onlineTicket
=
onlineTicket
;
this
.
onlineTicket
=
onlineTicket
;
}
}
public
boolean
isRoleAdministrators
()
{
return
roleAdministrators
;
}
public
void
setRoleAdministrators
(
boolean
roleAdministrators
)
{
this
.
roleAdministrators
=
roleAdministrators
;
}
@Override
@Override
public
String
toString
()
{
public
String
toString
()
{
StringBuilder
builder
=
new
StringBuilder
();
StringBuilder
builder
=
new
StringBuilder
();
...
...
maxkey-core/src/main/java/org/maxkey/authn/RealmAuthenticationProvider.java
浏览文件 @
0b441c16
...
@@ -17,6 +17,8 @@
...
@@ -17,6 +17,8 @@
package
org.maxkey.authn
;
package
org.maxkey.authn
;
import
java.util.ArrayList
;
import
org.maxkey.authn.online.OnlineTicket
;
import
org.maxkey.authn.online.OnlineTicket
;
import
org.maxkey.domain.UserInfo
;
import
org.maxkey.domain.UserInfo
;
import
org.maxkey.web.WebConstants
;
import
org.maxkey.web.WebConstants
;
...
@@ -26,6 +28,8 @@ import org.slf4j.LoggerFactory;
...
@@ -26,6 +28,8 @@ import org.slf4j.LoggerFactory;
import
org.springframework.security.authentication.BadCredentialsException
;
import
org.springframework.security.authentication.BadCredentialsException
;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
import
org.springframework.security.core.Authentication
;
import
org.springframework.security.core.Authentication
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.security.core.authority.SimpleGrantedAuthority
;
import
org.springframework.security.web.authentication.WebAuthenticationDetails
;
import
org.springframework.security.web.authentication.WebAuthenticationDetails
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
...
@@ -157,13 +161,25 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider
...
@@ -157,13 +161,25 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider
OnlineTicket
onlineTicket
=
new
OnlineTicket
(
onlineTickitId
,
authentication
);
OnlineTicket
onlineTicket
=
new
OnlineTicket
(
onlineTickitId
,
authentication
);
this
.
onlineTicketServices
.
store
(
onlineTickitId
,
onlineTicket
);
this
.
onlineTicketServices
.
store
(
onlineTickitId
,
onlineTicket
);
authentication
.
setOnlineTicket
(
onlineTicket
);
authentication
.
setOnlineTicket
(
onlineTicket
);
ArrayList
<
GrantedAuthority
>
grantedAuthoritys
=
authenticationRealm
.
grantAuthority
(
userInfo
);
//set default roles
grantedAuthoritys
.
add
(
new
SimpleGrantedAuthority
(
"ROLE_USER"
));
grantedAuthoritys
.
add
(
new
SimpleGrantedAuthority
(
"ROLE_ORDINARY_USER"
));
authentication
.
setAuthenticated
(
true
);
authentication
.
setAuthenticated
(
true
);
for
(
GrantedAuthority
administratorsAuthority
:
grantedAdministratorsAuthoritys
)
{
if
(
grantedAuthoritys
.
contains
(
administratorsAuthority
))
{
authentication
.
setRoleAdministrators
(
true
);
_logger
.
trace
(
"ROLE ADMINISTRATORS Authentication ."
);
}
}
UsernamePasswordAuthenticationToken
authenticationToken
=
UsernamePasswordAuthenticationToken
authenticationToken
=
new
UsernamePasswordAuthenticationToken
(
new
UsernamePasswordAuthenticationToken
(
authentication
,
authentication
,
"PASSWORD"
,
"PASSWORD"
,
authenticationRealm
.
grantAuthority
(
userInfo
)
grantedAuthoritys
);
);
authenticationToken
.
setDetails
(
authenticationToken
.
setDetails
(
...
...
maxkey-web-manage/src/main/java/org/maxkey/web/interceptor/PermissionAdapter.java
浏览文件 @
0b441c16
...
@@ -23,13 +23,13 @@ import javax.servlet.RequestDispatcher;
...
@@ -23,13 +23,13 @@ import javax.servlet.RequestDispatcher;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
org.maxkey.authn.BasicAuthentication
;
import
org.maxkey.configuration.ApplicationConfig
;
import
org.maxkey.configuration.ApplicationConfig
;
import
org.maxkey.web.WebContext
;
import
org.maxkey.web.WebContext
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
;
import
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
;
/**
/**
...
@@ -48,6 +48,7 @@ public class PermissionAdapter extends HandlerInterceptorAdapter {
...
@@ -48,6 +48,7 @@ public class PermissionAdapter extends HandlerInterceptorAdapter {
private
ApplicationConfig
applicationConfig
;
private
ApplicationConfig
applicationConfig
;
static
ConcurrentHashMap
<
String
,
String
>
navigationsMap
=
null
;
static
ConcurrentHashMap
<
String
,
String
>
navigationsMap
=
null
;
/*
/*
* 请求前处理
* 请求前处理
* (non-Javadoc)
* (non-Javadoc)
...
@@ -58,13 +59,21 @@ public class PermissionAdapter extends HandlerInterceptorAdapter {
...
@@ -58,13 +59,21 @@ public class PermissionAdapter extends HandlerInterceptorAdapter {
_logger
.
trace
(
"PermissionAdapter preHandle"
);
_logger
.
trace
(
"PermissionAdapter preHandle"
);
//判断用户是否登录
//判断用户是否登录
if
(
WebContext
.
getAuthentication
()==
null
||
WebContext
.
getAuthentication
().
getAuthorities
()==
null
){
//判断用户和角色,判断用户是否登录用户
if
(
WebContext
.
getAuthentication
()==
null
_logger
.
trace
(
"No Authentication ... forward to /login"
);
||
WebContext
.
getAuthentication
().
getAuthorities
()==
null
){
//判断用户和角色,判断用户是否登录用户
RequestDispatcher
dispatcher
=
request
.
getRequestDispatcher
(
"/login"
);
_logger
.
trace
(
"No Authentication ... forward to /login"
);
dispatcher
.
forward
(
request
,
response
);
RequestDispatcher
dispatcher
=
request
.
getRequestDispatcher
(
"/login"
);
return
false
;
dispatcher
.
forward
(
request
,
response
);
}
return
false
;
}
//非管理员用户直接注销
if
(!((
BasicAuthentication
)
WebContext
.
getAuthentication
().
getPrincipal
()).
isRoleAdministrators
())
{
_logger
.
debug
(
"Not ADMINISTRATORS Authentication ."
);
RequestDispatcher
dispatcher
=
request
.
getRequestDispatcher
(
"/logout"
);
dispatcher
.
forward
(
request
,
response
);
return
false
;
}
boolean
hasAccess
=
true
;
boolean
hasAccess
=
true
;
...
...
maxkey-web-manage/src/main/resources/templates/views/groupapp/groupAppsList.ftl
浏览文件 @
0b441c16
...
@@ -11,6 +11,10 @@
...
@@ -11,6 +11,10 @@
$
(
function
()
{
$
(
function
()
{
$
(
"
#addGroupAppsBtn
"
).
on
(
"
click
"
,
function
(){
$
(
"
#addGroupAppsBtn
"
).
on
(
"
click
"
,
function
(){
if
(
$
(
"
#groupId
"
).
val
()
==
""
){
$
.
alert
({
content
:
$
.
platform
.
messages
.
select
.
alertText
});
return
;
}
var
settings
=
{
var
settings
=
{
url
:
"
<@base/>/groupPrivileges/addGroupAppsList/
"
+
$
(
"
#groupId
"
).
val
(),
//window url
url
:
"
<@base/>/groupPrivileges/addGroupAppsList/
"
+
$
(
"
#groupId
"
).
val
(),
//window url
title
:
"
New
"
,
//title
title
:
"
New
"
,
//title
...
...
maxkey-web-manage/src/main/resources/templates/views/groupuser/groupUsersList.ftl
浏览文件 @
0b441c16
...
@@ -11,7 +11,11 @@
...
@@ -11,7 +11,11 @@
$
(
function
()
{
$
(
function
()
{
$
(
"
#insertGroupUserBtn
"
).
on
(
"
click
"
,
function
(){
$
(
"
#insertGroupUserBtn
"
).
on
(
"
click
"
,
function
(){
if
(
$
(
"
#groupId
"
).
val
()
==
""
){
$
.
alert
({
content
:
$
.
platform
.
messages
.
select
.
alertText
});
return
;
}
var
settings
=
{
var
settings
=
{
url
:
"
<@base/>/groupMember/addGroupAppsList/
"
+
$
(
"
#groupId
"
).
val
(),
//window url
url
:
"
<@base/>/groupMember/addGroupAppsList/
"
+
$
(
"
#groupId
"
).
val
(),
//window url
title
:
"
New
"
,
//title
title
:
"
New
"
,
//title
...
...
maxkey-web-manage/src/main/resources/templates/views/resources/resourceAdd.ftl
浏览文件 @
0b441c16
...
@@ -15,6 +15,14 @@ $(function () {
...
@@ -15,6 +15,14 @@ $(function () {
$
(
"
#appId
"
).
val
(
$
.
cookie
(
"
select_app_id
"
));
$
(
"
#appId
"
).
val
(
$
.
cookie
(
"
select_app_id
"
));
$
(
"
#parentId
"
).
val
(
$
.
cookie
(
"
select_res_id
"
));
$
(
"
#parentId
"
).
val
(
$
.
cookie
(
"
select_res_id
"
));
$
(
"
#parentName
"
).
val
(
$
.
cookie
(
"
select_res_name
"
));
$
(
"
#parentName
"
).
val
(
$
.
cookie
(
"
select_res_name
"
));
if
(
$
(
"
#parentId
"
).
val
()
==
""
){
$
.
alert
({
content
:
$
.
platform
.
messages
.
select
.
alertText
,
callback
:
function
(){
$
.
closeWindow
();}
});
}
});
});
</script>
</script>
</head>
</head>
...
...
maxkey-web-manage/src/main/resources/templates/views/roleusers/roleUsersList.ftl
浏览文件 @
0b441c16
...
@@ -12,6 +12,10 @@
...
@@ -12,6 +12,10 @@
$
(
function
()
{
$
(
function
()
{
$
(
"
#insertGroupUserBtn
"
).
on
(
"
click
"
,
function
(){
$
(
"
#insertGroupUserBtn
"
).
on
(
"
click
"
,
function
(){
if
(
$
(
"
#roleId
"
).
val
()
==
""
){
$
.
alert
({
content
:
$
.
platform
.
messages
.
select
.
alertText
});
return
;
}
var
settings
=
{
var
settings
=
{
url
:
"
<@base/>/rolemembers/addRoleAppsList/
"
+
$
(
"
#roleId
"
).
val
(),
//window url
url
:
"
<@base/>/rolemembers/addRoleAppsList/
"
+
$
(
"
#roleId
"
).
val
(),
//window url
title
:
"
New
"
,
//title
title
:
"
New
"
,
//title
...
...
maxkey-web-manage/src/main/resources/templates/views/userinfo/userAdd.ftl
浏览文件 @
0b441c16
...
@@ -51,7 +51,8 @@
...
@@ -51,7 +51,8 @@
<tr>
<tr>
<td
style=
"width:15%;"
><
@
locale
code=
"userinfo.username"
/>
:
</td>
<td
style=
"width:15%;"
><
@
locale
code=
"userinfo.username"
/>
:
</td>
<td
style=
"width:35%;"
>
<td
style=
"width:35%;"
>
<input
type=
"hidden"
id=
"id"
name=
"id"
value=
""
/>
<input
type=
"hidden"
id=
"id"
name=
"id"
value=
""
/>
<input
type=
"hidden"
id=
"status"
name=
"status"
value=
"1"
/>
<input
class=
"form-control"
type=
"text"
required=
""
id=
"username"
name=
"username"
title=
""
value=
""
/>
<input
class=
"form-control"
type=
"text"
required=
""
id=
"username"
name=
"username"
title=
""
value=
""
/>
</td>
</td>
<td
style=
"width:15%;"
><
@
locale
code=
"login.text.password"
/>
:
</td>
<td
style=
"width:15%;"
><
@
locale
code=
"login.text.password"
/>
:
</td>
...
...
maxkey-web-manage/src/main/resources/templates/views/userinfo/usersList.ftl
浏览文件 @
0b441c16
...
@@ -136,9 +136,13 @@ $(function () {
...
@@ -136,9 +136,13 @@ $(function () {
}
}
);
//end tree
);
//end tree
$
(
"
#changepwdBtn
"
).
on
(
"
click
"
,
function
(){
$
(
"
#changepwdBtn
"
).
on
(
"
click
"
,
function
(){
$
(
"
#changepwdBtnHidden
"
).
attr
(
"
wurl
"
,
"
<@base/>/userinfo/forwardChangePassword/
"
+
$
.
dataGridSelRowsData
(
"
#datagrid
"
)[
0
].
id
);
if
(
$
.
dataGridSelRowsData
(
"
#datagrid
"
)[
0
]
==
null
){
$
(
"
#changepwdBtnHidden
"
).
click
();
$
.
alert
({
content
:
$
.
platform
.
messages
.
select
.
alertText
});
return
;
}
$
(
"
#changepwdBtnHidden
"
).
attr
(
"
wurl
"
,
"
<@base/>/userinfo/forwardChangePassword/
"
+
$
.
dataGridSelRowsData
(
"
#datagrid
"
)[
0
].
id
);
$
(
"
#changepwdBtnHidden
"
).
click
();
});
});
});
});
...
...
maxkey-web-maxkey/src/main/resources/templates/views/layout/top.ftl
浏览文件 @
0b441c16
...
@@ -40,12 +40,13 @@
...
@@ -40,12 +40,13 @@
<div style="float:right;" > <@locale code="login.password.changepassword"/> </div>
<div style="float:right;" > <@locale code="login.password.changepassword"/> </div>
</a>
</a>
</td>
</td>
<#if Session["current_authentication"].principal.roleAdministrators==true >
<td id="manage" nowrap>
<td id="manage" nowrap>
<a target="_blank" href="<@base/>/authz/maxkey_mgt">
<a target="_blank" href="<@base/>/authz/maxkey_mgt">
<div style="float:right;" > <@locale code="global.text.manage"/> </div>
<div style="float:right;" > <@locale code="global.text.manage"/> </div>
</a>
</a>
</td>
</td>
</#if>
<td id="logout" class="ui-widget-header" >
<td id="logout" class="ui-widget-header" >
<a href="<@base/>/logout?reLoginUrl=login">
<a href="<@base/>/logout?reLoginUrl=login">
<div style="float:right;" > <@locale code="global.text.logout"/> </div>
<div style="float:right;" > <@locale code="global.text.logout"/> </div>
...
...
sql/maxkey_v2.2.0.GA.sql
→
sql/
oldversions/
maxkey_v2.2.0.GA.sql
浏览文件 @
0b441c16
文件已移动
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录