mirror of
https://gitee.com/dromara/MaxKey.git
synced 2025-12-08 09:58:56 +08:00
Email and LDAP store to database
This commit is contained in:
parent
e0a274fada
commit
6a00bf4517
251
maxkey-core/src/main/java/org/maxkey/entity/EmailSenders.java
Normal file
251
maxkey-core/src/main/java/org/maxkey/entity/EmailSenders.java
Normal file
@ -0,0 +1,251 @@
|
|||||||
|
package org.maxkey.entity;
|
||||||
|
|
||||||
|
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.JpaBaseEntity;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name = "MXK_EMAIL_SENDERS")
|
||||||
|
public class EmailSenders extends JpaBaseEntity{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 3689854324601731505L;
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@Column
|
||||||
|
@GeneratedValue(strategy = GenerationType.AUTO, generator = "snowflakeid")
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String account;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String credentials;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String smtpHost;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private Integer port;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private int sslSwitch;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String sender;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String encoding;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String protocol;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private int status;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String instId;
|
||||||
|
|
||||||
|
private String instName;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String createdDate;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String modifiedBy;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String modifiedDate;
|
||||||
|
|
||||||
|
public EmailSenders() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAccount() {
|
||||||
|
return account;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAccount(String account) {
|
||||||
|
this.account = account;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCredentials() {
|
||||||
|
return credentials;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCredentials(String credentials) {
|
||||||
|
this.credentials = credentials;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSmtpHost() {
|
||||||
|
return smtpHost;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSmtpHost(String smtpHost) {
|
||||||
|
this.smtpHost = smtpHost;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getPort() {
|
||||||
|
return port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPort(Integer port) {
|
||||||
|
this.port = port;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int getSslSwitch() {
|
||||||
|
return sslSwitch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSslSwitch(int sslSwitch) {
|
||||||
|
this.sslSwitch = sslSwitch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEncoding() {
|
||||||
|
return encoding;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEncoding(String encoding) {
|
||||||
|
this.encoding = encoding;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProtocol() {
|
||||||
|
return protocol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProtocol(String protocol) {
|
||||||
|
this.protocol = protocol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSender() {
|
||||||
|
return sender;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSender(String sender) {
|
||||||
|
this.sender = sender;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(int status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInstId() {
|
||||||
|
return instId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInstId(String instId) {
|
||||||
|
this.instId = instId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInstName() {
|
||||||
|
return instName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInstName(String instName) {
|
||||||
|
this.instName = instName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("EmailSenders [id=");
|
||||||
|
builder.append(id);
|
||||||
|
builder.append(", account=");
|
||||||
|
builder.append(account);
|
||||||
|
builder.append(", credentials=");
|
||||||
|
builder.append(credentials);
|
||||||
|
builder.append(", smtpHost=");
|
||||||
|
builder.append(smtpHost);
|
||||||
|
builder.append(", port=");
|
||||||
|
builder.append(port);
|
||||||
|
builder.append(", sslSwitch=");
|
||||||
|
builder.append(sslSwitch);
|
||||||
|
builder.append(", sender=");
|
||||||
|
builder.append(sender);
|
||||||
|
builder.append(", status=");
|
||||||
|
builder.append(status);
|
||||||
|
builder.append(", instId=");
|
||||||
|
builder.append(instId);
|
||||||
|
builder.append(", instName=");
|
||||||
|
builder.append(instName);
|
||||||
|
builder.append(", description=");
|
||||||
|
builder.append(description);
|
||||||
|
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("]");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -161,23 +161,23 @@ public class PasswordPolicyRowMapper implements RowMapper<PasswordPolicy> {
|
|||||||
@Override
|
@Override
|
||||||
public PasswordPolicy mapRow(ResultSet rs, int rowNum) throws SQLException {
|
public PasswordPolicy mapRow(ResultSet rs, int rowNum) throws SQLException {
|
||||||
PasswordPolicy passwordPolicy = new PasswordPolicy();
|
PasswordPolicy passwordPolicy = new PasswordPolicy();
|
||||||
passwordPolicy.setId(rs.getString("ID"));
|
passwordPolicy.setId(rs.getString("id"));
|
||||||
passwordPolicy.setMinLength(rs.getInt("MINLENGTH"));
|
passwordPolicy.setMinLength(rs.getInt("minlength"));
|
||||||
passwordPolicy.setMaxLength(rs.getInt("MAXLENGTH"));
|
passwordPolicy.setMaxLength(rs.getInt("maxlength"));
|
||||||
passwordPolicy.setLowerCase(rs.getInt("LOWERCASE"));
|
passwordPolicy.setLowerCase(rs.getInt("lowercase"));
|
||||||
passwordPolicy.setUpperCase(rs.getInt("UPPERCASE"));
|
passwordPolicy.setUpperCase(rs.getInt("uppercase"));
|
||||||
passwordPolicy.setDigits(rs.getInt("DIGITS"));
|
passwordPolicy.setDigits(rs.getInt("digits"));
|
||||||
passwordPolicy.setSpecialChar(rs.getInt("SPECIALCHAR"));
|
passwordPolicy.setSpecialChar(rs.getInt("specialchar"));
|
||||||
passwordPolicy.setAttempts(rs.getInt("ATTEMPTS"));
|
passwordPolicy.setAttempts(rs.getInt("attempts"));
|
||||||
passwordPolicy.setDuration(rs.getInt("DURATION"));
|
passwordPolicy.setDuration(rs.getInt("duration"));
|
||||||
passwordPolicy.setExpiration(rs.getInt("EXPIRATION"));
|
passwordPolicy.setExpiration(rs.getInt("expiration"));
|
||||||
passwordPolicy.setUsername(rs.getInt("USERNAME"));
|
passwordPolicy.setUsername(rs.getInt("username"));
|
||||||
passwordPolicy.setHistory(rs.getInt("HISTORY"));
|
passwordPolicy.setHistory(rs.getInt("history"));
|
||||||
passwordPolicy.setDictionary(rs.getInt("DICTIONARY"));
|
passwordPolicy.setDictionary(rs.getInt("dictionary"));
|
||||||
passwordPolicy.setAlphabetical(rs.getInt("ALPHABETICAL"));
|
passwordPolicy.setAlphabetical(rs.getInt("alphabetical"));
|
||||||
passwordPolicy.setNumerical(rs.getInt("NUMERICAL"));
|
passwordPolicy.setNumerical(rs.getInt("numerical"));
|
||||||
passwordPolicy.setQwerty(rs.getInt("QWERTY"));
|
passwordPolicy.setQwerty(rs.getInt("qwerty"));
|
||||||
passwordPolicy.setOccurances(rs.getInt("OCCURANCES"));
|
passwordPolicy.setOccurances(rs.getInt("occurances"));
|
||||||
return passwordPolicy;
|
return passwordPolicy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright [2022] [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.entity.EmailSenders;
|
||||||
|
|
||||||
|
public interface EmailSendersMapper extends IJpaBaseMapper<EmailSenders> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright [2022] [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.entity.LdapContext;
|
||||||
|
|
||||||
|
public interface LdapContextMapper extends IJpaBaseMapper<LdapContext> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Copyright [2022] [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.entity.EmailSenders;
|
||||||
|
import org.maxkey.persistence.mapper.EmailSendersMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class EmailSendersService extends JpaBaseService<EmailSenders>{
|
||||||
|
|
||||||
|
public EmailSendersService() {
|
||||||
|
super(EmailSendersMapper.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.connsec.db.service.BaseService#getMapper()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public EmailSendersMapper getMapper() {
|
||||||
|
return (EmailSendersMapper)super.getMapper();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Copyright [2022] [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.entity.LdapContext;
|
||||||
|
import org.maxkey.persistence.mapper.LdapContextMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class LdapContextService extends JpaBaseService<LdapContext>{
|
||||||
|
|
||||||
|
public LdapContextService() {
|
||||||
|
super(LdapContextMapper.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see com.connsec.db.service.BaseService#getMapper()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public LdapContextMapper getMapper() {
|
||||||
|
return (LdapContextMapper)super.getMapper();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -131,6 +131,8 @@ public class MaxKeyMgtMvcConfig implements WebMvcConfigurer {
|
|||||||
.addPathPatterns("/accountsstrategy/**")
|
.addPathPatterns("/accountsstrategy/**")
|
||||||
.addPathPatterns("/institutions/**")
|
.addPathPatterns("/institutions/**")
|
||||||
.addPathPatterns("/localization/**")
|
.addPathPatterns("/localization/**")
|
||||||
|
.addPathPatterns("/ldapcontext/**")
|
||||||
|
.addPathPatterns("/emailsenders/**")
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,92 @@
|
|||||||
|
/*
|
||||||
|
* Copyright [2022] [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.contorller;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.maxkey.constants.ConstantsOperateMessage;
|
||||||
|
import org.maxkey.crypto.password.PasswordReciprocal;
|
||||||
|
import org.maxkey.entity.EmailSenders;
|
||||||
|
import org.maxkey.persistence.service.EmailSendersService;
|
||||||
|
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.stereotype.Controller;
|
||||||
|
import org.springframework.validation.BindingResult;
|
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
@RequestMapping(value={"/emailsenders"})
|
||||||
|
public class EmailSendersController {
|
||||||
|
|
||||||
|
|
||||||
|
final static Logger _logger = LoggerFactory.getLogger(EmailSendersController.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmailSendersService emailSendersService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 读取
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping(value={"/forward"})
|
||||||
|
public ModelAndView forward(){
|
||||||
|
EmailSenders emailSenders = emailSendersService.get(WebContext.getUserInfo().getInstId());
|
||||||
|
if(emailSenders != null && StringUtils.isNotBlank(emailSenders.getCredentials())) {
|
||||||
|
emailSenders.setCredentials(PasswordReciprocal.getInstance().decoder(emailSenders.getCredentials()));
|
||||||
|
}else {
|
||||||
|
emailSenders =new EmailSenders();
|
||||||
|
emailSenders.setProtocol("smtp");
|
||||||
|
emailSenders.setEncoding("utf-8");
|
||||||
|
}
|
||||||
|
return new ModelAndView("emailsenders/updateEmailSenders","model",emailSenders);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新
|
||||||
|
* @param emailSenders
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping(value={"/update"})
|
||||||
|
@ResponseBody
|
||||||
|
public Message update(@ModelAttribute("emailSenders") EmailSenders emailSenders,BindingResult result) {
|
||||||
|
_logger.debug("update emailSenders : "+emailSenders);
|
||||||
|
emailSenders.setInstId(WebContext.getUserInfo().getInstId());
|
||||||
|
emailSenders.setCredentials(PasswordReciprocal.getInstance().encode(emailSenders.getCredentials()));
|
||||||
|
boolean updateResult = false;
|
||||||
|
if(StringUtils.isBlank(emailSenders.getId())) {
|
||||||
|
emailSenders.setId(emailSenders.getInstId());
|
||||||
|
updateResult = emailSendersService.insert(emailSenders);
|
||||||
|
}else {
|
||||||
|
updateResult = emailSendersService.update(emailSenders);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(updateResult) {
|
||||||
|
return new Message(WebContext.getI18nValue(ConstantsOperateMessage.UPDATE_SUCCESS),MessageType.success);
|
||||||
|
} else {
|
||||||
|
return new Message(WebContext.getI18nValue(ConstantsOperateMessage.UPDATE_ERROR),MessageType.error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
* Copyright [2022] [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.contorller;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.maxkey.constants.ConstantsOperateMessage;
|
||||||
|
import org.maxkey.crypto.password.PasswordReciprocal;
|
||||||
|
import org.maxkey.entity.LdapContext;
|
||||||
|
import org.maxkey.persistence.service.LdapContextService;
|
||||||
|
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.stereotype.Controller;
|
||||||
|
import org.springframework.validation.BindingResult;
|
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
@RequestMapping(value={"/ldapcontext"})
|
||||||
|
public class LdapContextController {
|
||||||
|
|
||||||
|
|
||||||
|
final static Logger _logger = LoggerFactory.getLogger(LdapContextController.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LdapContextService ldapContextService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 读取
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping(value={"/forward"})
|
||||||
|
public ModelAndView forward(){
|
||||||
|
LdapContext ldapContext = ldapContextService.get(WebContext.getUserInfo().getInstId());
|
||||||
|
if(ldapContext != null && StringUtils.isNoneBlank(ldapContext.getCredentials())) {
|
||||||
|
ldapContext.setCredentials(PasswordReciprocal.getInstance().decoder(ldapContext.getCredentials()));
|
||||||
|
}
|
||||||
|
return new ModelAndView("ldapcontext/updateLdapContext","model",ldapContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新
|
||||||
|
* @param sysConfig
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@RequestMapping(value={"/update"})
|
||||||
|
@ResponseBody
|
||||||
|
public Message update(@ModelAttribute("ldapContext") LdapContext ldapContext,BindingResult result) {
|
||||||
|
_logger.debug("update ldapContext : "+ldapContext);
|
||||||
|
ldapContext.setCredentials(PasswordReciprocal.getInstance().encode(ldapContext.getCredentials()));
|
||||||
|
ldapContext.setInstId(WebContext.getUserInfo().getInstId());
|
||||||
|
boolean updateResult = false;
|
||||||
|
if(StringUtils.isBlank(ldapContext.getId())) {
|
||||||
|
ldapContext.setId(ldapContext.getInstId());
|
||||||
|
updateResult = ldapContextService.insert(ldapContext);
|
||||||
|
}else {
|
||||||
|
updateResult = ldapContextService.update(ldapContext);
|
||||||
|
}
|
||||||
|
if(updateResult) {
|
||||||
|
return new Message(WebContext.getI18nValue(ConstantsOperateMessage.UPDATE_SUCCESS),MessageType.success);
|
||||||
|
} else {
|
||||||
|
return new Message(WebContext.getI18nValue(ConstantsOperateMessage.UPDATE_ERROR),MessageType.error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -513,6 +513,26 @@ institutions.postalcode=\u90AE\u7F16
|
|||||||
localization.property=\u5C5E\u6027
|
localization.property=\u5C5E\u6027
|
||||||
localization.langZh=\u4E2D\u6587
|
localization.langZh=\u4E2D\u6587
|
||||||
localization.langEn=\u82F1\u6587
|
localization.langEn=\u82F1\u6587
|
||||||
|
|
||||||
|
ldapcontext.product=\u4EA7\u54C1
|
||||||
|
ldapcontext.providerUrl=\u5730\u5740
|
||||||
|
ldapcontext.principal=\u8D26\u53F7
|
||||||
|
ldapcontext.credentials=\u51ED\u8BC1
|
||||||
|
ldapcontext.filters=\u8FC7\u6EE4\u5668
|
||||||
|
ldapcontext.basedn=\u57FA\u672CDN
|
||||||
|
ldapcontext.msadDomain=Active Directory\u57DF
|
||||||
|
ldapcontext.sslSwitch=SSL
|
||||||
|
ldapcontext.trustStore=\u8BC1\u4E66
|
||||||
|
ldapcontext.trustStorePassword=\u8BC1\u4E66\u5BC6\u94A5
|
||||||
|
#emailsenders
|
||||||
|
emailsenders.account=\u8D26\u53F7
|
||||||
|
emailsenders.credentials=\u51ED\u8BC1
|
||||||
|
emailsenders.smtpHost=SMTP\u5730\u5740
|
||||||
|
emailsenders.port=\u7AEF\u53E3
|
||||||
|
emailsenders.sslSwitch=SSL
|
||||||
|
emailsenders.sender=\u53D1\u9001\u4EBA
|
||||||
|
emailsenders.encoding=\u9ED8\u8BA4\u7F16\u7801
|
||||||
|
emailsenders.protocol=\u534F\u8BAE
|
||||||
#button
|
#button
|
||||||
button.text.action=\u8BBF\u95EE
|
button.text.action=\u8BBF\u95EE
|
||||||
button.text.visit=\u8BBF\u95EE
|
button.text.visit=\u8BBF\u95EE
|
||||||
@ -637,3 +657,5 @@ navs.notices=\u901A\u77E5\u516C\u544A
|
|||||||
navs.institutions=\u673A\u6784\u914D\u7F6E
|
navs.institutions=\u673A\u6784\u914D\u7F6E
|
||||||
navs.socials.provider=\u793E\u4EA4\u670D\u52A1
|
navs.socials.provider=\u793E\u4EA4\u670D\u52A1
|
||||||
navs.synchronizers=\u540C\u6B65\u5668\u7BA1\u7406
|
navs.synchronizers=\u540C\u6B65\u5668\u7BA1\u7406
|
||||||
|
navs.ldapcontext=LDAP\u914D\u7F6E
|
||||||
|
navs.emailsenders=\u7535\u5B50\u90AE\u7BB1
|
||||||
@ -523,6 +523,26 @@ localization.property=Property
|
|||||||
localization.langZh=Chinese
|
localization.langZh=Chinese
|
||||||
localization.langEn=English
|
localization.langEn=English
|
||||||
|
|
||||||
|
ldapcontext.product=Product
|
||||||
|
ldapcontext.providerUrl=ProviderUrl
|
||||||
|
ldapcontext.principal=Principal
|
||||||
|
ldapcontext.credentials=Credentials
|
||||||
|
ldapcontext.filters=Filters
|
||||||
|
ldapcontext.basedn=Base DN
|
||||||
|
ldapcontext.msadDomain=Active Directory Domain
|
||||||
|
ldapcontext.sslSwitch=SSL
|
||||||
|
ldapcontext.trustStore=TrustStore
|
||||||
|
ldapcontext.trustStorePassword=TrustStorePassword
|
||||||
|
|
||||||
|
emailsenders.account=Account
|
||||||
|
emailsenders.credentials=Credentials
|
||||||
|
emailsenders.smtpHost=SMTPHost
|
||||||
|
emailsenders.port=Port
|
||||||
|
emailsenders.sslSwitch=SSL
|
||||||
|
emailsenders.sender=Sender
|
||||||
|
emailsenders.encoding=Encoding
|
||||||
|
emailsenders.protocol=Protocol
|
||||||
|
|
||||||
button.text.action=Action
|
button.text.action=Action
|
||||||
button.text.visit=Visit
|
button.text.visit=Visit
|
||||||
button.text.add=Add
|
button.text.add=Add
|
||||||
@ -646,3 +666,5 @@ navs.notices=Notices
|
|||||||
navs.institutions=Institutions
|
navs.institutions=Institutions
|
||||||
navs.socials.provider=SocialsProvider
|
navs.socials.provider=SocialsProvider
|
||||||
navs.synchronizers=Synchronizers
|
navs.synchronizers=Synchronizers
|
||||||
|
navs.ldapcontext=LdapContext
|
||||||
|
navs.emailsenders=Email
|
||||||
@ -513,6 +513,26 @@ institutions.postalcode=\u90AE\u7F16
|
|||||||
localization.property=\u5C5E\u6027
|
localization.property=\u5C5E\u6027
|
||||||
localization.langZh=\u4E2D\u6587
|
localization.langZh=\u4E2D\u6587
|
||||||
localization.langEn=\u82F1\u6587
|
localization.langEn=\u82F1\u6587
|
||||||
|
|
||||||
|
ldapcontext.product=\u4EA7\u54C1
|
||||||
|
ldapcontext.providerUrl=\u5730\u5740
|
||||||
|
ldapcontext.principal=\u8D26\u53F7
|
||||||
|
ldapcontext.credentials=\u51ED\u8BC1
|
||||||
|
ldapcontext.filters=\u8FC7\u6EE4\u5668
|
||||||
|
ldapcontext.basedn=\u57FA\u672CDN
|
||||||
|
ldapcontext.msadDomain=Active Directory\u57DF
|
||||||
|
ldapcontext.sslSwitch=SSL
|
||||||
|
ldapcontext.trustStore=\u8BC1\u4E66
|
||||||
|
ldapcontext.trustStorePassword=\u8BC1\u4E66\u5BC6\u94A5
|
||||||
|
#emailsenders
|
||||||
|
emailsenders.account=\u8D26\u53F7
|
||||||
|
emailsenders.credentials=\u51ED\u8BC1
|
||||||
|
emailsenders.smtpHost=SMTP\u5730\u5740
|
||||||
|
emailsenders.port=\u7AEF\u53E3
|
||||||
|
emailsenders.sslSwitch=SSL
|
||||||
|
emailsenders.sender=\u53D1\u9001\u4EBA
|
||||||
|
emailsenders.encoding=\u9ED8\u8BA4\u7F16\u7801
|
||||||
|
emailsenders.protocol=\u534F\u8BAE
|
||||||
#button
|
#button
|
||||||
button.text.action=\u8BBF\u95EE
|
button.text.action=\u8BBF\u95EE
|
||||||
button.text.visit=\u8BBF\u95EE
|
button.text.visit=\u8BBF\u95EE
|
||||||
@ -637,3 +657,5 @@ navs.notices=\u901A\u77E5\u516C\u544A
|
|||||||
navs.institutions=\u673A\u6784\u914D\u7F6E
|
navs.institutions=\u673A\u6784\u914D\u7F6E
|
||||||
navs.socials.provider=\u793E\u4EA4\u670D\u52A1
|
navs.socials.provider=\u793E\u4EA4\u670D\u52A1
|
||||||
navs.synchronizers=\u540C\u6B65\u5668\u7BA1\u7406
|
navs.synchronizers=\u540C\u6B65\u5668\u7BA1\u7406
|
||||||
|
navs.ldapcontext=LDAP\u914D\u7F6E
|
||||||
|
navs.emailsenders=\u7535\u5B50\u90AE\u7BB1
|
||||||
@ -0,0 +1,187 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<#include "../layout/header.ftl"/>
|
||||||
|
<#include "../layout/common.cssjs.ftl"/>
|
||||||
|
</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.emailsenders"/></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="inactive">/ <@locale code="navs.conf"/></li>
|
||||||
|
<li class="active">/ <@locale code="navs.emailsenders"/></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-header border-bottom">
|
||||||
|
<h4 class="card-title"><@locale code="navs.emailsenders"/></h4>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<form method="post" type="label" validate="true" action="<@base/>/emailsenders/update" id="actionForm" class="needs-validation" novalidate>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="common.text.id" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input class="form-control" readonly id="id" name="id" type="text" value="${model.id!}"/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="common.text.status" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<select id="status" name="status" class="form-control form-select">
|
||||||
|
<option value="0" <#if 0==model.status>selected</#if> ><@locale code="common.text.status.disabled" /></option>
|
||||||
|
<option value="1" <#if 1==model.status>selected</#if> ><@locale code="common.text.status.enabled" /></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="emailsenders.smtpHost" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input required="" class="form-control" type="text" id="smtpHost" name="smtpHost" value="${model.smtpHost!}" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="emailsenders.port" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input required="" class="form-control" type="text" id="port" name="port" value="${model.port!}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="emailsenders.account" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input required="" class="form-control" type="text" id="account" name="account" value="${model.account!}" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="emailsenders.credentials" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input required="" class="form-control" type="password" id="credentials" name="credentials" value="${model.credentials!}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="emailsenders.protocol" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input required="" class="form-control" type="text" id="protocol" name="protocol" value="${model.protocol!}" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="emailsenders.encoding" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input required="" class="form-control" type="text" id="encoding" name="encoding" value="${model.encoding!}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="emailsenders.sender" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input class="form-control" type="text" id="sender" name="sender" value="${model.sender!}"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3"><@locale code="emailsenders.sslSwitch" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<select id="sslSwitch" name="sslSwitch" class="form-control form-select">
|
||||||
|
<option value="0" <#if 0==model.sslSwitch>selected</#if> ><@locale code="common.text.no" /></option>
|
||||||
|
<option value="1" <#if 1==model.sslSwitch>selected</#if> ><@locale code="common.text.yes" /></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group row">
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<label class="col-form-label"><@locale code="common.text.description" />:</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input class="form-control" type="text" id="description" name="description" value="${model.description!}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4"></div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input class="form-control" type="hidden" id="status" name="status" value="1" />
|
||||||
|
<button type="submit" class="button btn-primary btn btn-common btn-block mr-3" id="submitBtn" ><@locale code="button.text.save" /></button>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</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>
|
||||||
@ -141,6 +141,19 @@
|
|||||||
<span class="fa fa-fw fa-balance-scale"></span>
|
<span class="fa fa-fw fa-balance-scale"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="side-nav-menu" href="<@base />/ldapcontext/forward/">
|
||||||
|
<@locale code="navs.ldapcontext"/>
|
||||||
|
<span class="fa fa-fw fa-balance-scale"></span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="side-nav-menu" href="<@base />/emailsenders/forward/">
|
||||||
|
<@locale code="navs.emailsenders"/>
|
||||||
|
<span class="fa fa-fw fa-balance-scale"></span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a class="side-nav-menu" href="<@base />/config/passwordpolicy/forward/">
|
<a class="side-nav-menu" href="<@base />/config/passwordpolicy/forward/">
|
||||||
<@locale code="navs.conf.passwordpolicy"/>
|
<@locale code="navs.conf.passwordpolicy"/>
|
||||||
|
|||||||
@ -0,0 +1,193 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<#include "../layout/header.ftl"/>
|
||||||
|
<#include "../layout/common.cssjs.ftl"/>
|
||||||
|
</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.ldapcontext"/></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="inactive">/ <@locale code="navs.conf"/></li>
|
||||||
|
<li class="active">/ <@locale code="navs.ldapcontext"/></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-header border-bottom">
|
||||||
|
<h4 class="card-title"><@locale code="navs.ldapcontext"/></h4>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<form method="post" type="label" validate="true" action="<@base/>/ldapcontext/update" id="actionForm" class="needs-validation" novalidate>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="ldapcontext.product" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input id="id" name="id" type="hidden" value="${model.id!}"/>
|
||||||
|
<select id="product" name="product" class="form-control form-select">
|
||||||
|
<option value="ActiveDirectory" <#if 'ActiveDirectory'==model.product>selected</#if> >Active Directory</option>
|
||||||
|
<option value="OpenLDAP" <#if 'OpenLDAP'==model.product >selected</#if> >OpenLDAP</option>
|
||||||
|
<option value="StandardLDAP" <#if 'StandardLDAP'==model.product >selected</#if> >StandardLDAP</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="common.text.status" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<select id="status" name="status" class="form-control form-select">
|
||||||
|
<option value="0" <#if 0==model.status>selected</#if> ><@locale code="common.text.status.disabled" /></option>
|
||||||
|
<option value="1" <#if 1==model.status>selected</#if> ><@locale code="common.text.status.enabled" /></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label class="col-md-2 col-form-label"><@locale code="ldapcontext.providerUrl" />:</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input required="" class="form-control" type="text" id="providerUrl" name="providerUrl" value="${model.providerUrl!}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="ldapcontext.principal" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input required="" class="form-control" type="text" id="principal" name="principal" value="${model.principal!}" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="ldapcontext.credentials" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input required="" class="form-control" type="password" id="credentials" name="credentials" value="${model.credentials!}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="ldapcontext.filters" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input required="" class="form-control" type="text" id="filters" name="filters" value="${model.filters!}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="ldapcontext.basedn" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input required="" class="form-control" type="text" id="basedn" name="basedn" value="${model.basedn!}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="ldapcontext.msadDomain" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input class="form-control" type="text" id="msadDomain" name="msadDomain" value="${model.msadDomain!}"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3"><@locale code="ldapcontext.sslSwitch" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<select id="sslSwitch" name="sslSwitch" class="form-control form-select">
|
||||||
|
<option value="0" <#if '0'==model.sslSwitch>selected</#if> ><@locale code="common.text.no" /></option>
|
||||||
|
<option value="1" <#if '1'==model.sslSwitch>selected</#if> ><@locale code="common.text.yes" /></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="ldapcontext.trustStore" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input class="form-control" type="text" id="trustStore" name="trustStore" value="${model.trustStore!}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-sm-3 col-form-label"><@locale code="ldapcontext.trustStorePassword" />:</label>
|
||||||
|
<div class="col-sm-9">
|
||||||
|
<input class="form-control" type="text" id="trustStorePassword" name="trustStorePassword" value="${model.trustStorePassword!}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group row">
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<label class="col-form-label"><@locale code="common.text.description" />:</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input class="form-control" type="text" id="description" name="description" value="${model.description!}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4"></div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<input class="form-control" type="hidden" id="status" name="status" value="1" />
|
||||||
|
<button type="submit" class="button btn-primary btn btn-common btn-block mr-3" id="submitBtn" ><@locale code="button.text.save" /></button>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</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>
|
||||||
Loading…
x
Reference in New Issue
Block a user