Merge branch 'develop' into feature_naming_ap

This commit is contained in:
nkorange 2019-01-22 10:13:22 +08:00
commit cc9b6b58b7
26 changed files with 217 additions and 103 deletions

3
.gitattributes vendored Normal file
View File

@ -0,0 +1,3 @@
*.js linguist-language=java
*.css linguist-language=java
*.html linguist-language=java

View File

@ -33,7 +33,7 @@ public class HttpMethod {
public static final String DELETE = "DELETE";
public static final String OPTIONS = "PATCH";
public static final String OPTIONS = "OPTIONS";
public static final String TRACE = "TRACE";
}

View File

@ -189,6 +189,6 @@ CREATE TABLE roles (
role varchar(50) NOT NULL
);
INSERT INTO users (username, password, enabled) VALUES ('admin', '$2a$10$HxtJtd59imujvbux.i55zOGewhnJiLVXX8D9AETDMV.XtBLDGOXtW', TRUE);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN');
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

View File

@ -184,6 +184,6 @@ CREATE TABLE roles (
role varchar(50) NOT NULL
);
INSERT INTO users (username, password, enabled) VALUES ('admin', '$2a$10$HxtJtd59imujvbux.i55zOGewhnJiLVXX8D9AETDMV.XtBLDGOXtW', TRUE);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN');
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

View File

@ -0,0 +1,30 @@
/*
* Copyright 1999-2018 Alibaba Group Holding Ltd.
*
* 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 com.alibaba.nacos.console.utils;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
/**
* Password encoder tool
*
* @author nacos
*/
public class PasswordEncoderUtil {
public static void main(String[] args) {
System.out.println(new BCryptPasswordEncoder().encode("nacos"));
}
}

View File

@ -184,6 +184,6 @@ CREATE TABLE roles (
role varchar(50) NOT NULL
);
INSERT INTO users (username, password, enabled) VALUES ('admin', '$2a$10$HxtJtd59imujvbux.i55zOGewhnJiLVXX8D9AETDMV.XtBLDGOXtW', TRUE);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN');
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

View File

@ -64,7 +64,7 @@
"webpack-dev-server": "^3.1.13"
},
"dependencies": {
"@alifd/next": "^1.11.5",
"@alifd/next": "^1.11.10",
"axios": "^0.18.0",
"jquery": "^3.3.1",
"moment": "^2.23.0",

View File

@ -323,7 +323,6 @@ select,
textarea {
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
a {
@ -7122,4 +7121,4 @@ td.visible-print {
td.hidden-print {
display: none !important;
}
}
}

View File

@ -20,7 +20,7 @@
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Nacos</title>
<link rel="shortcut icon" href="//www.aliyun.com/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="css/console1412.css">
<!-- 第三方css开始 -->
<link rel="stylesheet" type="text/css" href="css/codemirror.css">

View File

@ -114,7 +114,6 @@ class App extends React.Component {
<HashRouter>
<Switch>
<Route path="/login" component={Login} />
<Layout navList={_menu.data}>
{MENU.map(item => (
<Route key={item.path} {...item} />

View File

@ -32,6 +32,8 @@ class Header extends React.Component {
static propTypes = {
locale: PropTypes.object,
history: PropTypes.object,
location: PropTypes.object,
language: PropTypes.string,
changeLanguage: PropTypes.func,
};
@ -53,7 +55,6 @@ class Header extends React.Component {
const base64Url = token.split('.')[1];
const base64 = base64Url.replace('-', '+').replace('_', '/');
const parsedToken = JSON.parse(window.atob(base64));
console.log(parsedToken);
return parsedToken.sub;
}
return '';

View File

@ -20,6 +20,8 @@ import $ from 'jquery';
import { setParams } from '../globalLib';
import { connect } from 'react-redux';
import './index.scss';
@withRouter
@connect(state => ({ ...state.locale }))
@ConfigProvider.config
@ -29,6 +31,7 @@ class MainLayout extends React.Component {
static propTypes = {
navList: PropTypes.array,
history: PropTypes.object,
location: PropTypes.object,
locale: PropTypes.object,
children: PropTypes.any,
};
@ -72,6 +75,11 @@ class MainLayout extends React.Component {
iconClass.className = tmpClassName;
}
/**
* Click the back button
* TODO: this.props.history.goBack(); ???
* @param url
*/
nacosGoBack(url) {
const params = window.location.hash.split('?')[1];
const urlArr = params.split('&') || [];
@ -91,6 +99,9 @@ class MainLayout extends React.Component {
}
}
}
if (localStorage.getItem('namespace')) {
queryParams.push(`namespace=${localStorage.getItem('namespace')}`);
}
this.props.history.push(`/${url}?${queryParams.join('&')}`);
}
@ -201,7 +212,8 @@ class MainLayout extends React.Component {
}
nacosLoopNav(data, _index = 0, parent) {
const { locale = {} } = this.props;
const { locale = {}, location = {} } = this.props;
const { pathname } = location;
let index = _index;
// 遍历导航只显示2级
const self = this;
@ -238,6 +250,7 @@ class MainLayout extends React.Component {
} else {
return (
<li
className={pathname === `/${item.serviceName}` ? 'selected' : ''}
key={`${item.serviceName}`}
data-spm-click={`gostr=/aliyun;locaid=${item.serviceName}`}
onClick={this.navTo.bind(this, `/${item.serviceName}`)}
@ -256,6 +269,7 @@ class MainLayout extends React.Component {
}
return (
<li
className={pathname === `/${item.serviceName}` ? 'selected' : ''}
key={`${item.serviceName}`}
data-spm-click={`gostr=/aliyun;locaid=${item.serviceName}`}
onClick={this.navTo.bind(this, `/${item.serviceName}`)}
@ -396,7 +410,6 @@ class MainLayout extends React.Component {
<span style={{ marginLeft: 5 }}>{nacosVersion}</span>
</div>
)}
<div
className="product-nav-list"
style={{ position: 'relative', top: 0, height: '100%' }}

View File

@ -1394,3 +1394,7 @@ h6 {
padding-right: 20px;
}
}
.product-nav-list li.selected a {
background-color: #F4F6F8;
}

View File

@ -125,6 +125,9 @@ const I18N_CONF = {
healthCheckPatternService: 'Service',
healthCheckPatternClient: 'Client',
healthCheckPatternNone: 'None',
serviceNameRequired: 'Please enter a service name',
protectThresholdRequired: 'Please enter a protect threshold',
healthCheckModeRequired: 'Please select health check pattern',
},
InstanceTable: {
operation: 'Operation',

View File

@ -125,6 +125,9 @@ const I18N_CONF = {
healthCheckPatternService: '服务端',
healthCheckPatternClient: '客户端',
healthCheckPatternNone: '禁止',
serviceNameRequired: '请输入服务名',
protectThresholdRequired: '请输入保护阈值',
healthCheckModeRequired: '请选择健康检查模式',
},
InstanceTable: {
operation: '操作',

View File

@ -734,7 +734,7 @@ class ConfigurationManagement extends React.Component {
style={{
position: 'relative',
marginTop: 10,
height: this.state.isAdvancedQuery ? 'auto' : 48,
height: this.state.isAdvancedQuery ? 'auto' : 42,
overflow: 'hidden',
}}
>

View File

@ -379,10 +379,10 @@ class NewConfig extends React.Component {
const { init } = this.field;
const formItemLayout = {
labelCol: {
span: 2,
fixedSpan: 10,
},
wrapperCol: {
span: 22,
span: 14,
},
};
@ -433,8 +433,8 @@ class NewConfig extends React.Component {
color={'#333'}
>
<h1>{locale.newListing}</h1>
<Form field={this.field}>
<FormItem label={'Data ID:'} required {...formItemLayout}>
<Form className="new-config-form" field={this.field} {...formItemLayout}>
<FormItem label={'Data ID:'} required>
<Input
{...init('dataId', {
rules: [
@ -442,13 +442,10 @@ class NewConfig extends React.Component {
required: true,
message: locale.newConfig,
},
{
max: 255,
message: locale.dataIdIsNotEmpty,
},
{ validator: this.validateChart.bind(this) },
],
})}
maxLength={255}
addonTextBefore={
this.state.addonBefore ? (
<div style={{ minWidth: 100, color: '#373D41' }}>{this.state.addonBefore}</div>
@ -456,7 +453,7 @@ class NewConfig extends React.Component {
}
/>
</FormItem>
<FormItem label={'Group:'} required {...formItemLayout}>
<FormItem label={'Group:'} required>
<Combobox
style={{ width: '100%' }}
size={'large'}
@ -483,49 +480,52 @@ class NewConfig extends React.Component {
</FormItem>
<FormItem
label={' '}
{...formItemLayout}
style={{ display: this.state.showGroupWarning ? 'block' : 'none' }}
>
<Message type={'warning'} size={'medium'} animation={false}>
{locale.annotation}
</Message>
</FormItem>
<FormItem label={''} {...formItemLayout}>
<div>
<FormItem
label={locale.tags}
className={`more-item${!this.state.showmore ? ' hide' : ''}`}
>
<Select
size={'medium'}
hasArrow
style={{ width: '100%', height: '100%!important' }}
autoWidth
multiple
mode="tag"
filterLocal
placeholder={locale.pleaseEnterTag}
dataSource={this.state.tagLst}
value={this.state.config_tags}
onChange={this.setConfigTags.bind(this)}
hasClear
/>
</FormItem>
<FormItem
label={locale.groupIdCannotBeLonger}
className={`more-item${!this.state.showmore ? ' hide' : ''}`}
>
<Input {...init('appName')} readOnly={this.inApp} />
</FormItem>
<FormItem label=" ">
<div className="more-container">
<a style={{ fontSize: '12px' }} onClick={this.toggleMore.bind(this)}>
{this.state.showmore ? locale.dataIdLength : locale.collapse}
</a>
</div>
</FormItem>
<div style={{ overflow: 'hidden', height: this.state.showmore ? 'auto' : '0' }}>
<FormItem label={locale.tags} {...formItemLayout}>
<Select
size={'medium'}
hasArrow
style={{ width: '100%', height: '100%!important' }}
autoWidth
multiple
mode="tag"
filterLocal
placeholder={locale.pleaseEnterTag}
dataSource={this.state.tagLst}
value={this.state.config_tags}
onChange={this.setConfigTags.bind(this)}
hasClear
/>
</FormItem>
<FormItem label={locale.groupIdCannotBeLonger} {...formItemLayout}>
<Input {...init('appName')} readOnly={this.inApp} />
</FormItem>
</div>
<FormItem label={locale.description} {...formItemLayout}>
<FormItem label={locale.description}>
<Input.TextArea htmlType={'text'} multiple rows={3} {...init('desc')} />
</FormItem>
<FormItem label={locale.targetEnvironment} {...formItemLayout}>
<FormItem label={locale.targetEnvironment}>
<RadioGroup
dataSource={list}
value={this.state.configType}
@ -543,9 +543,8 @@ class NewConfig extends React.Component {
size={'small'}
style={{
color: '#1DC11D',
marginRight: 5,
margin: '0 5px',
verticalAlign: 'middle',
marginTop: 2,
}}
/>
}
@ -560,12 +559,11 @@ class NewConfig extends React.Component {
</span>
}
required
{...formItemLayout}
>
<div id={'container'} style={{ width: '100%', height: 300 }} />
</FormItem>
<FormItem {...formItemLayout} label={''}>
<FormItem label=" ">
<div style={{ textAlign: 'right' }}>
<Button
type={'primary'}

View File

@ -10,3 +10,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.new-config-form {
max-width: 1000px;
margin-top: 30px;
}
.more-container {
text-align: right;
}
.more-item.hide {
display: none;
}

View File

@ -5,6 +5,7 @@ import { withRouter } from 'react-router-dom';
import './index.scss';
import Header from '../../layouts/Header';
import { request } from '../../globalLib';
import PropTypes from 'prop-types';
const FormItem = Form.Item;
@ -13,6 +14,11 @@ const FormItem = Form.Item;
class Login extends React.Component {
static displayName = 'Login';
static propTypes = {
locale: PropTypes.object,
history: PropTypes.object,
};
constructor(props) {
super(props);
this.field = new Field(this);
@ -28,15 +34,14 @@ class Login extends React.Component {
type: 'post',
url: 'v1/auth/login',
data: values,
success: res => {
if (res.code === 200) {
const data = res.data;
success: ({ code, data }) => {
if (code === 200) {
// TODO: token
localStorage.setItem('token', data);
// TODO: 使react router
this.props.history.push('/');
}
if (res.code === 401) {
if (code === 401) {
Message.error({
content: locale.invalidUsernameOrPassword,
});

View File

@ -33,6 +33,7 @@ class EditServiceDialog extends React.Component {
isCreate: false,
editService: {},
editServiceDialogVisible: false,
errors: { name: {}, protectThreshold: {}, healthCheckMode: {} },
};
this.show = this.show.bind(this);
}
@ -52,10 +53,29 @@ class EditServiceDialog extends React.Component {
this.setState({ editServiceDialogVisible: false });
}
validator(field) {
const { locale = {} } = this.props;
const errors = Object.assign({}, this.state.errors);
const helpMap = {
name: locale.serviceNameRequired,
protectThreshold: locale.protectThresholdRequired,
healthCheckMode: locale.healthCheckModeRequired,
};
for (const key in field) {
if (!field[key]) {
errors[key] = { validateState: 'error', help: helpMap[key] };
this.setState({ errors });
return false;
}
}
return true;
}
onConfirm() {
const { isCreate } = this.state;
const editService = Object.assign({}, this.state.editService);
const { name, protectThreshold, healthCheckMode, metadataText, selector } = editService;
if (!this.validator({ name, protectThreshold, healthCheckMode })) return;
request({
method: isCreate ? 'POST' : 'PUT',
url: 'v1/ns/service',
@ -86,7 +106,15 @@ class EditServiceDialog extends React.Component {
}
onChangeCluster(changeVal) {
const resetKey = ['name', 'protectThreshold', 'healthCheckMode'];
const { editService = {} } = this.state;
const errors = Object.assign({}, this.state.errors);
resetKey.forEach(key => {
if (changeVal[key]) {
errors[key] = {};
this.setState({ errors });
}
});
this.setState({
editService: Object.assign({}, editService, changeVal),
});
@ -99,7 +127,7 @@ class EditServiceDialog extends React.Component {
render() {
const { locale = {} } = this.props;
const { isCreate, editService, editServiceDialogVisible } = this.state;
const { isCreate, editService, editServiceDialogVisible, errors } = this.state;
const {
name,
protectThreshold,
@ -118,20 +146,35 @@ class EditServiceDialog extends React.Component {
onClose={() => this.hide()}
>
<Form {...DIALOG_FORM_LAYOUT}>
<Form.Item label={`${locale.serviceName}:`} {...formItemLayout}>
<Form.Item
required={isCreate}
{...formItemLayout}
label={`${locale.serviceName}:`}
{...errors.name}
>
{!isCreate ? (
<p>{name}</p>
) : (
<Input value={name} onChange={name => this.onChangeCluster({ name })} />
)}
</Form.Item>
<Form.Item label={`${locale.protectThreshold}:`} {...formItemLayout}>
<Form.Item
required
{...formItemLayout}
label={`${locale.protectThreshold}:`}
{...errors.protectThreshold}
>
<Input
value={protectThreshold}
onChange={protectThreshold => this.onChangeCluster({ protectThreshold })}
/>
</Form.Item>
<Form.Item label={`${locale.healthCheckPattern}:`} {...formItemLayout}>
<Form.Item
required
{...formItemLayout}
label={`${locale.healthCheckPattern}:`}
{...errors.healthCheckMode}
>
<Select
className="full-width"
defaultValue={healthCheckMode}

View File

@ -2,10 +2,10 @@
# yarn lockfile v1
"@alifd/next@^1.11.5":
version "1.11.8"
resolved "https://registry.yarnpkg.com/@alifd/next/-/next-1.11.8.tgz#02b8b6faf3cbfaf2a4edc3c8943fa5a28dbcb546"
integrity sha512-zXxeO35XeAsxxlhZsJbslPeb9gzsUdwlk3bwVQbxI/J7IsfEydsyXUT2/wY4pR6UHyaO2YG4wrgQ1N8YhngwPQ==
"@alifd/next@^1.11.10":
version "1.11.10"
resolved "https://registry.yarnpkg.com/@alifd/next/-/next-1.11.10.tgz#7efddb8154024578fee19d51433d532efbf2c649"
integrity sha512-RkPRGyk2KjUQPJplKqHG2MAhDCzH3bVpq/klXmI1MvQErSEL+hgNSgvqmh3M/vSKVGIai27vs/Xlgju54LRvKA==
dependencies:
babel-runtime "^6.26.0"
classnames "^2.2.3"
@ -1820,9 +1820,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000928:
version "1.0.30000928"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000928.tgz#805e828dc72b06498e3683a32e61c7507fd67b88"
integrity sha512-aSpMWRXL6ZXNnzm8hgE4QDLibG5pVJ2Ujzsuj3icazlIkxXkPXtL+BWnMx6FBkWmkZgBHGUxPZQvrbRw2ZTxhg==
version "1.0.30000929"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000929.tgz#7b391b781a9c3097ecc39ea053301aea8ea16317"
integrity sha512-n2w1gPQSsYyorSVYqPMqbSaz1w7o9ZC8VhOEGI9T5MfGDzp7sbopQxG6GaQmYsaq13Xfx/mkxJUWC1Dz3oZfzw==
caseless@~0.12.0:
version "0.12.0"
@ -2910,9 +2910,9 @@ eslint-config-ali@^4.1.0:
integrity sha512-vPItHMwM4e8TpXH/owvZCW0V4we7QlxSok2ObeOXwu99Gu26mbdqukH47EUDBrm93ru9HefNlYA7BQ8jrQy1dA==
eslint-config-prettier@^3.3.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-3.4.0.tgz#97dd5bf33d4d85862fdadf2ea89b4d6cebf3ba4f"
integrity sha512-VDBMmnwA1SH4tGoyTVStbjI18xAFtozvrodjEuoqtP/P/XLJs5Ga8sFf7GSSPxAkgh65CGYT/zOXzsf2IA0aqw==
version "3.5.0"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-3.5.0.tgz#fb29575c5be7ed79c1637c5a0c58985833290805"
integrity sha512-LcZEoAY5lL3/H2NTFSeUl/z8X8oMea1IxLEIb5uDbRxPTdQeeT7oGpRWT6UwHXGcoRbYH0TZmfRsh8iXbpyW7A==
dependencies:
get-stdin "^6.0.0"
@ -2967,9 +2967,9 @@ eslint-plugin-prettier@^3.0.0:
prettier-linter-helpers "^1.0.0"
eslint-plugin-react@^7.11.1:
version "7.12.3"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.3.tgz#b9ca4cd7cd3f5d927db418a1950366a12d4568fd"
integrity sha512-WTIA3cS8OzkPeCi4KWuPmjR33lgG9r9Y/7RmnLTRw08MZKgAfnK/n3BO4X0S67MPkVLazdfCNT/XWqcDu4BLTA==
version "7.12.4"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz#b1ecf26479d61aee650da612e425c53a99f48c8c"
integrity sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==
dependencies:
array-includes "^3.0.3"
doctrine "^2.1.0"
@ -3522,9 +3522,9 @@ fs.realpath@^1.0.0:
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
fsevents@^1.2.2:
version "1.2.4"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==
version "1.2.6"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.6.tgz#d3a1864a71876a2eb9b244e3bd8f606eb09568c0"
integrity sha512-BalK54tfK0pMC0jQFb2oHn1nz7JNQD/2ex5pBnCHgBi2xG7VV0cAOGy2RS2VbCqUXx5/6obMrMcQTJ8yjcGzbg==
dependencies:
nan "^2.9.2"
node-pre-gyp "^0.10.0"
@ -4799,9 +4799,9 @@ loader-fs-cache@^1.0.0:
mkdirp "0.5.1"
loader-runner@^2.3.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979"
integrity sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==
version "2.4.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
loader-utils@^0.2.16:
version "0.2.17"
@ -6291,9 +6291,9 @@ postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^
integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.5, postcss@^7.0.6:
version "7.0.11"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.11.tgz#f63c513b78026d66263bb2ca995bf02e3d1a697d"
integrity sha512-9AXb//5UcjeOEof9T+yPw3XTa5SL207ZOIC/lHYP4mbUTEh4M0rDAQekQpVANCZdwQwKhBtFZCk3i3h3h2hdWg==
version "7.0.13"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.13.tgz#42bf716413e8f1c786ab71dc6e722b3671b16708"
integrity sha512-h8SY6kQTd1wISHWjz+E6cswdhMuyBZRb16pSTv3W4zYZ3/YbyWeJdNUeOXB5IdZqE1U76OUEjjjqsC3z2f3hVg==
dependencies:
chalk "^2.4.2"
source-map "^0.6.1"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -189,6 +189,6 @@ CREATE TABLE roles (
role varchar(50) NOT NULL
);
INSERT INTO users (username, password, enabled) VALUES ('admin', '$2a$10$HxtJtd59imujvbux.i55zOGewhnJiLVXX8D9AETDMV.XtBLDGOXtW', TRUE);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN');
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

View File

@ -183,6 +183,6 @@ CREATE TABLE roles (
role varchar(50) NOT NULL
);
INSERT INTO users (username, password, enabled) VALUES ('admin', '$2a$10$HxtJtd59imujvbux.i55zOGewhnJiLVXX8D9AETDMV.XtBLDGOXtW', TRUE);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN');
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

View File

@ -170,6 +170,6 @@ CREATE TABLE roles (
role varchar(50) NOT NULL
);
INSERT INTO users (username, password, enabled) VALUES ('admin', '$2a$10$HxtJtd59imujvbux.i55zOGewhnJiLVXX8D9AETDMV.XtBLDGOXtW', TRUE);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('admin', 'ROLE_ADMIN');
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');