diff --git a/WebContent/WEB-INF/spring-security.xml b/WebContent/WEB-INF/spring-security.xml index 7ba9d85276..7eef359618 100644 --- a/WebContent/WEB-INF/spring-security.xml +++ b/WebContent/WEB-INF/spring-security.xml @@ -17,6 +17,11 @@ + + + + + @@ -34,7 +39,13 @@
- + + + + + + + @@ -195,6 +206,7 @@ authorities-by-username-query="SELECT username, CASE WHEN admin = 'Y' THEN 'ROLE_ADMIN' WHEN username = 'soap-services' THEN 'ROLE_SERVICES' + WHEN username = 'httpds-basic' THEN 'ROLE_HTTPDS' ELSE 'ROLE_USER' END AS role FROM users WHERE username = ?"/> diff --git a/src/org/scada_lts/dao/migration/mysql/V2_7_5_3_1__AddHttpdsUser.java b/src/org/scada_lts/dao/migration/mysql/V2_7_5_3_1__AddHttpdsUser.java new file mode 100644 index 0000000000..fa37ca33fa --- /dev/null +++ b/src/org/scada_lts/dao/migration/mysql/V2_7_5_3_1__AddHttpdsUser.java @@ -0,0 +1,54 @@ +package org.scada_lts.dao.migration.mysql; + +import com.serotonin.mango.Common; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.flywaydb.core.api.migration.BaseJavaMigration; +import org.flywaydb.core.api.migration.Context; +import org.scada_lts.dao.DAO; +import org.springframework.jdbc.core.ArgumentPreparedStatementSetter; +import org.springframework.jdbc.core.JdbcTemplate; + +import java.sql.PreparedStatement; +import java.util.List; + +public class V2_7_5_3_1__AddHttpdsUser extends BaseJavaMigration { + + private static final Log LOG = LogFactory.getLog(V2_7_5_3_1__AddHttpdsUser.class); + + @Override + public void migrate(Context context) throws Exception { + + try { + final JdbcTemplate jdbcTemplate = DAO.getInstance().getJdbcTemp(); + + String userInsert = "insert into users (username, password, email, phone, admin, disabled, " + + "homeUrl, receiveAlarmEmails, receiveOwnAuditEvents) values (?,?,?,?,?,?,?,?,?);"; + addHttpdsBasicUser(jdbcTemplate, userInsert); + } catch (Exception ex) { + LOG.error(ex.getMessage(), ex); + throw ex; + } + } + + private void addHttpdsBasicUser(JdbcTemplate jdbcTmp, String userInsert) { + List ids = jdbcTmp.queryForList("select id from users where username = ?", new Object[]{"httpds-basic"}, Integer.class); + if(ids.isEmpty()) { + jdbcTmp.update(connection -> { + PreparedStatement preparedStatement = connection.prepareStatement(userInsert); + new ArgumentPreparedStatementSetter(new Object[]{ + "httpds-basic", + Common.encrypt("httpds-basic"), + "null@null.com", + "", + "N", + "Y", + "", + 0, + "N" + }).setValues(preparedStatement); + return preparedStatement; + }); + } + } +}