Commit 1a7177ed authored by 2breakegg's avatar 2breakegg

Merge remote-tracking branch 'origin/master'

parents 8e8fb944 0373d4e2
...@@ -2,15 +2,19 @@ ...@@ -2,15 +2,19 @@
root = true root = true
[*] [*]
charset = utf-8
indent_style = space indent_style = space
indent_size = 2 indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true insert_final_newline = true
trim_trailing_whitespace = true
end_of_line = lf
[*.md] [*.md]
max_line_length = 0
trim_trailing_whitespace = false trim_trailing_whitespace = false
[Makefile] # Indentation override
indent_style = tab #[lib/**.js]
#[{package.json,.travis.yml}]
#[**/**.js]
...@@ -23,11 +23,16 @@ ...@@ -23,11 +23,16 @@
"no-bitwise": [0], "no-bitwise": [0],
"no-cond-assign": [0], "no-cond-assign": [0],
"import/no-unresolved": [0], "import/no-unresolved": [0],
"require-yield": [1] "require-yield": [1],
"react/react-in-jsx-scope": [0],
"no-extra-semi": [0]
}, },
"parserOptions": { "parserOptions": {
"ecmaFeatures": { "ecmaFeatures": {
"experimentalObjectRestSpread": true "experimentalObjectRestSpread": true
} }
},
"env": {
"browser": true
} }
} }
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="eb37985e-18dc-4e2f-82ba-9874832785ff" name="Default" comment="log out"> <list default="true" id="eb37985e-18dc-4e2f-82ba-9874832785ff" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.travis.yml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/models/auth.js" afterPath="$PROJECT_DIR$/src/models/auth.js" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/models/user.js" afterPath="$PROJECT_DIR$/src/models/user.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/Activate.js" afterPath="$PROJECT_DIR$/src/routes/Activate.js" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/Activate.js" afterPath="$PROJECT_DIR$/src/routes/Activate.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/Index.js" afterPath="$PROJECT_DIR$/src/routes/Index.js" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/Forgot.js" afterPath="$PROJECT_DIR$/src/routes/Forgot.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/Profiles.js" afterPath="$PROJECT_DIR$/src/routes/Profiles.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/Register.js" afterPath="$PROJECT_DIR$/src/routes/Register.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/Reset.js" afterPath="$PROJECT_DIR$/src/routes/Reset.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/Verify.js" afterPath="$PROJECT_DIR$/src/routes/Verify.js" />
</list> </list>
<ignored path="$PROJECT_DIR$/.tmp/" /> <ignored path="$PROJECT_DIR$/.tmp/" />
<ignored path="$PROJECT_DIR$/temp/" /> <ignored path="$PROJECT_DIR$/temp/" />
...@@ -21,12 +26,12 @@ ...@@ -21,12 +26,12 @@
<window id="1"> <window id="1">
<content type="file-editors"> <content type="file-editors">
<state> <state>
<leaf> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="i18n.json" pinned="false" current-in-tab="true"> <file leaf-file-name="i18n.json" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/i18n.json"> <entry file="file://$PROJECT_DIR$/i18n.json">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="267"> <state relative-caret-position="122">
<caret line="103" column="13" lean-forward="true" selection-start-line="103" selection-start-column="5" selection-end-line="103" selection-end-column="13" /> <caret line="84" column="16" lean-forward="false" selection-start-line="84" selection-start-column="16" selection-end-line="84" selection-end-column="16" />
<folding /> <folding />
</state> </state>
</provider> </provider>
...@@ -40,88 +45,127 @@ ...@@ -40,88 +45,127 @@
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" /> <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="auth.js" pinned="false" current-in-tab="true"> <file leaf-file-name="Index.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/auth.js"> <entry file="file://$PROJECT_DIR$/src/routes/Index.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="437"> <state relative-caret-position="115">
<caret line="23" column="20" lean-forward="false" selection-start-line="23" selection-start-column="20" selection-end-line="23" selection-end-column="20" /> <caret line="134" column="13" lean-forward="false" selection-start-line="134" selection-start-column="13" selection-end-line="134" selection-end-column="13" />
<folding> <folding>
<element signature="e#0#31#0" expanded="true" /> <element signature="e#0#36#0" expanded="true" />
<marker date="1491471996000" expanded="true" signature="2311:3776" ph="{...}" />
<marker date="1491471996000" expanded="true" signature="2482:3513" ph="&lt;Header/&gt;" />
<marker date="1491471996000" expanded="true" signature="2549:2690" ph="&lt;Link/&gt;" />
<marker date="1491471996000" expanded="true" signature="2700:2994" ph="&lt;Menu/&gt;" />
<marker date="1491471996000" expanded="true" signature="2856:2978" ph="&lt;Menu.Item/&gt;" />
<marker date="1491471996000" expanded="true" signature="2888:2955" ph="&lt;Link/&gt;" />
<marker date="1491471996000" expanded="true" signature="3004:3497" ph="&lt;Menu/&gt;" />
<marker date="1491471996000" expanded="true" signature="3231:3461" ph="&lt;Menu.Item/&gt;" />
<marker date="1491471996000" expanded="true" signature="3263:3438" ph="&lt;div/&gt;" />
<marker date="1491471996000" expanded="true" signature="3297:3366" ph="{...}" />
<marker date="1491471996000" expanded="true" signature="3521:3629" ph="&lt;Particles/&gt;" />
<marker date="1491471996000" expanded="true" signature="3579:3619" ph="{&quot;position&quot;: 'fixed'...}" />
<marker date="1491471996000" expanded="true" signature="3654:3758" ph="&lt;Footer/&gt;" />
<marker date="1491471996000" expanded="true" signature="3810:3892" ph="{...}" />
<marker date="1491471996000" expanded="true" signature="3870:3889" ph="{&quot;messages&quot;: messages...}" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="auth.js" pinned="false" current-in-tab="false"> <file leaf-file-name="index.html" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/services/auth.js"> <entry file="file://$PROJECT_DIR$/public/index.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="418"> <state relative-caret-position="240">
<caret line="22" column="0" lean-forward="true" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" /> <caret line="16" column="0" lean-forward="false" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="upload.js" pinned="false" current-in-tab="false"> <file leaf-file-name=".travis.yml" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/services/upload.js"> <entry file="file://$PROJECT_DIR$/.travis.yml">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="182">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="18" column="31" lean-forward="false" selection-start-line="18" selection-start-column="31" selection-end-line="18" selection-end-column="31" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="common.js" pinned="false" current-in-tab="false"> <file leaf-file-name="user.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/common.js"> <entry file="file://$PROJECT_DIR$/src/models/user.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="266"> <state relative-caret-position="198">
<caret line="14" column="6" lean-forward="false" selection-start-line="14" selection-start-column="6" selection-end-line="14" selection-end-column="6" /> <caret line="212" column="61" lean-forward="true" selection-start-line="212" selection-start-column="61" selection-end-line="212" selection-end-column="61" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="user.js" pinned="false" current-in-tab="false"> <file leaf-file-name="Activate.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/user.js"> <entry file="file://$PROJECT_DIR$/src/routes/Activate.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="40">
<caret line="16" column="26" lean-forward="false" selection-start-line="16" selection-start-column="26" selection-end-line="16" selection-end-column="26" />
<folding>
<element signature="e#0#30#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Profiles.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/Profiles.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3876"> <state relative-caret-position="172">
<caret line="208" column="24" lean-forward="false" selection-start-line="208" selection-start-column="24" selection-end-line="208" selection-end-column="24" /> <caret line="119" column="34" lean-forward="false" selection-start-line="119" selection-start-column="34" selection-end-line="119" selection-end-column="34" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="Index.js" pinned="false" current-in-tab="false"> <file leaf-file-name="Register.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/Index.js"> <entry file="file://$PROJECT_DIR$/src/routes/Register.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="625"> <state relative-caret-position="-1174">
<caret line="158" column="11" lean-forward="true" selection-start-line="158" selection-start-column="11" selection-end-line="158" selection-end-column="11" /> <caret line="62" column="46" lean-forward="true" selection-start-line="62" selection-start-column="46" selection-end-line="62" selection-end-column="46" />
<folding> <folding>
<element signature="e#0#36#0" expanded="true" /> <marker date="1491472843000" expanded="true" signature="1495:1562" ph="{&quot;validateStatus&quot;: checkEmail...}" />
<marker date="1491468814760" expanded="true" signature="3782:3786" ph="{&quot;messages&quot;: messages...}" /> <marker date="1491472843000" expanded="true" signature="2068:2193" ph="{&quot;placeholder&quot;: messages.username...}" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="Login.js" pinned="false" current-in-tab="false"> <file leaf-file-name="Reset.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/Login.js"> <entry file="file://$PROJECT_DIR$/src/routes/Reset.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="266"> <state relative-caret-position="33">
<caret line="45" column="77" lean-forward="false" selection-start-line="45" selection-start-column="77" selection-end-line="45" selection-end-column="77" /> <caret line="53" column="109" lean-forward="false" selection-start-line="53" selection-start-column="109" selection-end-line="53" selection-end-column="109" />
<folding>
<element signature="e#0#55#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Forgot.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/Forgot.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="92">
<caret line="37" column="20" lean-forward="false" selection-start-line="37" selection-start-column="20" selection-end-line="37" selection-end-column="20" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="Profiles.js" pinned="false" current-in-tab="false"> <file leaf-file-name="Verify.js" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/routes/Profiles.js"> <entry file="file://$PROJECT_DIR$/src/routes/Verify.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380"> <state relative-caret-position="123">
<caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" /> <caret line="71" column="18" lean-forward="false" selection-start-line="71" selection-start-column="18" selection-end-line="71" selection-end-column="18" />
<folding> <folding>
<element signature="e#0#61#0" expanded="true" /> <element signature="e#0#66#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
...@@ -181,26 +225,28 @@ ...@@ -181,26 +225,28 @@
<option value="$PROJECT_DIR$/src/components/SubmitButton.js" /> <option value="$PROJECT_DIR$/src/components/SubmitButton.js" />
<option value="$PROJECT_DIR$/src/components/UserNameForm.js" /> <option value="$PROJECT_DIR$/src/components/UserNameForm.js" />
<option value="$PROJECT_DIR$/src/routes/Login.js" /> <option value="$PROJECT_DIR$/src/routes/Login.js" />
<option value="$PROJECT_DIR$/src/routes/Register.js" />
<option value="$PROJECT_DIR$/src/routes/Reset.js" />
<option value="$PROJECT_DIR$/src/routes/Verify.js" />
<option value="$PROJECT_DIR$/src/services/upload.js" /> <option value="$PROJECT_DIR$/src/services/upload.js" />
<option value="$PROJECT_DIR$/src/services/user.js" /> <option value="$PROJECT_DIR$/src/services/user.js" />
<option value="$PROJECT_DIR$/src/index.js" /> <option value="$PROJECT_DIR$/src/index.js" />
<option value="$PROJECT_DIR$/src/router.js" /> <option value="$PROJECT_DIR$/src/router.js" />
<option value="$PROJECT_DIR$/src/components/PasswordForm.js" /> <option value="$PROJECT_DIR$/src/components/PasswordForm.js" />
<option value="$PROJECT_DIR$/src/models/upload.js" /> <option value="$PROJECT_DIR$/src/models/upload.js" />
<option value="$PROJECT_DIR$/src/models/user.js" />
<option value="$PROJECT_DIR$/src/components/EmailForm.js" /> <option value="$PROJECT_DIR$/src/components/EmailForm.js" />
<option value="$PROJECT_DIR$/src/components/SendEmail.js" /> <option value="$PROJECT_DIR$/src/components/SendEmail.js" />
<option value="$PROJECT_DIR$/src/routes/Forgot.js" />
<option value="$PROJECT_DIR$/src/routes/Profiles.js" />
<option value="$PROJECT_DIR$/i18n.json" /> <option value="$PROJECT_DIR$/i18n.json" />
<option value="$PROJECT_DIR$/src/models/common.js" /> <option value="$PROJECT_DIR$/src/models/common.js" />
<option value="$PROJECT_DIR$/src/routes/Activate.js" />
<option value="$PROJECT_DIR$/src/services/auth.js" /> <option value="$PROJECT_DIR$/src/services/auth.js" />
<option value="$PROJECT_DIR$/src/routes/Index.js" />
<option value="$PROJECT_DIR$/src/models/auth.js" /> <option value="$PROJECT_DIR$/src/models/auth.js" />
<option value="$PROJECT_DIR$/src/routes/Index.js" />
<option value="$PROJECT_DIR$/public/index.html" />
<option value="$PROJECT_DIR$/.travis.yml" />
<option value="$PROJECT_DIR$/src/models/user.js" />
<option value="$PROJECT_DIR$/src/routes/Activate.js" />
<option value="$PROJECT_DIR$/src/routes/Profiles.js" />
<option value="$PROJECT_DIR$/src/routes/Register.js" />
<option value="$PROJECT_DIR$/src/routes/Reset.js" />
<option value="$PROJECT_DIR$/src/routes/Forgot.js" />
<option value="$PROJECT_DIR$/src/routes/Verify.js" />
</list> </list>
</option> </option>
</component> </component>
...@@ -222,10 +268,9 @@ ...@@ -222,10 +268,9 @@
<handled-path value="$PROJECT_DIR$/node_modules" /> <handled-path value="$PROJECT_DIR$/node_modules" />
</component> </component>
<component name="ProjectFrameBounds"> <component name="ProjectFrameBounds">
<option name="x" value="-8" /> <option name="y" value="23" />
<option name="y" value="-8" /> <option name="width" value="1440" />
<option name="width" value="1936" /> <option name="height" value="815" />
<option name="height" value="1176" />
</component> </component>
<component name="ProjectView"> <component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1"> <navigator currentView="ProjectPane" proportions="" version="1">
...@@ -242,59 +287,39 @@ ...@@ -242,59 +287,39 @@
<foldersAlwaysOnTop value="true" /> <foldersAlwaysOnTop value="true" />
</navigator> </navigator>
<panes> <panes>
<pane id="Scope" />
<pane id="Scratches" />
<pane id="ProjectPane"> <pane id="ProjectPane">
<subPane> <subPane>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" /> <option name="myItemId" value="moecube-accounts-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" /> <option name="myItemId" value="moecube-accounts-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" /> <option name="myItemId" value="moecube-accounts-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" /> <option name="myItemId" value="moecube-accounts-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="src" /> <option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="services" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH> </PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" /> <option name="myItemId" value="moecube-accounts-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" /> <option name="myItemId" value="moecube-accounts-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
...@@ -308,11 +333,11 @@ ...@@ -308,11 +333,11 @@
</PATH> </PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" /> <option name="myItemId" value="moecube-accounts-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" /> <option name="myItemId" value="moecube-accounts-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
...@@ -324,26 +349,10 @@ ...@@ -324,26 +349,10 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="mycard-account-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="components" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane> </subPane>
</pane> </pane>
<pane id="Scope" />
<pane id="Scratches" />
</panes> </panes>
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
...@@ -357,6 +366,127 @@ ...@@ -357,6 +366,127 @@
<property name="node.js.path.for.package.standard" value="project" /> <property name="node.js.path.for.package.standard" value="project" />
<property name="node.js.selected.package.standard" value="" /> <property name="node.js.selected.package.standard" value="" />
</component> </component>
<component name="RestoreUpdateTree" date="Moments ago" ActionInfo="_Update">
<UpdatedFiles>
<FILE-GROUP>
<option name="myUpdateName" value="Updated from server" />
<option name="myStatusName" value="Changed on server" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="CHANGED_ON_SERVER" />
<FILE-GROUP>
<option name="myUpdateName" value="Updated" />
<option name="myStatusName" value="Changed" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="UPDATED" />
<PATH vcs="Git" revision="">$PROJECT_DIR$/.roadhogrc.js</PATH>
<PATH vcs="Git" revision="">$PROJECT_DIR$/i18n.json</PATH>
<PATH vcs="Git" revision="">$PROJECT_DIR$/package.json</PATH>
<PATH vcs="Git" revision="">$PROJECT_DIR$/src/models/user.js</PATH>
<PATH vcs="Git" revision="">$PROJECT_DIR$/src/routes/Activate.js</PATH>
<PATH vcs="Git" revision="">$PROJECT_DIR$/src/routes/Forgot.js</PATH>
<PATH vcs="Git" revision="">$PROJECT_DIR$/src/routes/Index.js</PATH>
<PATH vcs="Git" revision="">$PROJECT_DIR$/src/routes/Login.js</PATH>
<PATH vcs="Git" revision="">$PROJECT_DIR$/src/routes/Profiles.js</PATH>
<PATH vcs="Git" revision="">$PROJECT_DIR$/src/routes/Register.js</PATH>
<PATH vcs="Git" revision="">$PROJECT_DIR$/src/routes/Reset.js</PATH>
<PATH vcs="Git" revision="">$PROJECT_DIR$/src/routes/Verify.js</PATH>
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Created" />
<option name="myStatusName" value="Created" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="CREATED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Deleted" />
<option name="myStatusName" value="Deleted" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="true" />
<option name="myId" value="REMOVED_FROM_REPOSITORY" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Restored" />
<option name="myStatusName" value="Will be restored" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="RESTORED" />
</FILE-GROUP>
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Modified" />
<option name="myStatusName" value="Modified" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="MODIFIED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Skipped" />
<option name="myStatusName" value="Skipped" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="SKIPPED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Merged with conflicts" />
<option name="myStatusName" value="Will be merged with conflicts" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="MERGED_WITH_CONFLICTS" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Merged with tree conflicts" />
<option name="myStatusName" value="Merged with tree conflicts" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="MERGED_WITH_TREE_CONFLICT" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Merged with property conflicts" />
<option name="myStatusName" value="Will be merged with property conflicts" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="MERGED_WITH_PROPERTY_CONFLICT" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Merged" />
<option name="myStatusName" value="Will be merged" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="MERGED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Not in repository" />
<option name="myStatusName" value="Not in repository" />
<option name="mySupportsDeletion" value="true" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="UNKNOWN" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Locally added" />
<option name="myStatusName" value="Locally added" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="LOCALLY_ADDED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Locally removed" />
<option name="myStatusName" value="Locally removed" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="LOCALLY_REMOVED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Switched" />
<option name="myStatusName" value="Switched" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="SWITCHED" />
</FILE-GROUP>
</UpdatedFiles>
</component>
<component name="RunDashboard"> <component name="RunDashboard">
<option name="ruleStates"> <option name="ruleStates">
<list> <list>
...@@ -370,23 +500,33 @@ ...@@ -370,23 +500,33 @@
</option> </option>
</component> </component>
<component name="RunManager"> <component name="RunManager">
<configuration default="false" name="lint" type="js.build_tools.npm" factoryName="npm" temporary="true" nameIsGenerated="true">
<package-json value="$PROJECT_DIR$/package.json" />
<command value="run" />
<scripts>
<script value="lint" />
</scripts>
<node-interpreter value="/usr/local/Cellar/node/7.7.4/bin/node" />
<envs />
<method />
</configuration>
<configuration default="false" name="start" type="js.build_tools.npm" factoryName="npm" temporary="true" nameIsGenerated="true"> <configuration default="false" name="start" type="js.build_tools.npm" factoryName="npm" temporary="true" nameIsGenerated="true">
<package-json value="$PROJECT_DIR$/package.json" /> <package-json value="$PROJECT_DIR$/package.json" />
<command value="run" /> <command value="run" />
<scripts> <scripts>
<script value="start" /> <script value="start" />
</scripts> </scripts>
<node-interpreter value="project" /> <node-interpreter value="/usr/local/Cellar/node/7.7.4/bin/node" />
<envs /> <envs />
<method /> <method />
</configuration> </configuration>
<configuration default="false" name="lint" type="js.build_tools.npm" factoryName="npm" temporary="true" nameIsGenerated="true"> <configuration default="false" name="build" type="js.build_tools.npm" factoryName="npm" temporary="true" nameIsGenerated="true">
<package-json value="$PROJECT_DIR$/package.json" /> <package-json value="$PROJECT_DIR$/package.json" />
<command value="run" /> <command value="run" />
<scripts> <scripts>
<script value="lint" /> <script value="build" />
</scripts> </scripts>
<node-interpreter value="project" /> <node-interpreter value="/usr/local/Cellar/node/7.7.4/bin/node" />
<envs /> <envs />
<method /> <method />
</configuration> </configuration>
...@@ -456,14 +596,16 @@ ...@@ -456,14 +596,16 @@
<recursive>false</recursive> <recursive>false</recursive>
<method /> <method />
</configuration> </configuration>
<list size="2"> <list size="3">
<item index="0" class="java.lang.String" itemvalue="npm.start" /> <item index="0" class="java.lang.String" itemvalue="npm.lint" />
<item index="1" class="java.lang.String" itemvalue="npm.lint" /> <item index="1" class="java.lang.String" itemvalue="npm.start" />
<item index="2" class="java.lang.String" itemvalue="npm.build" />
</list> </list>
<recent_temporary> <recent_temporary>
<list size="2"> <list size="3">
<item index="0" class="java.lang.String" itemvalue="npm.lint" /> <item index="0" class="java.lang.String" itemvalue="npm.lint" />
<item index="1" class="java.lang.String" itemvalue="npm.start" /> <item index="1" class="java.lang.String" itemvalue="npm.build" />
<item index="2" class="java.lang.String" itemvalue="npm.start" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
...@@ -591,11 +733,32 @@ ...@@ -591,11 +733,32 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1491467859850</updated> <updated>1491467859850</updated>
</task> </task>
<option name="localTasksCounter" value="16" /> <task id="LOCAL-00016" summary="Merge remote-tracking branch 'origin/master'&#10;&#10;# Conflicts:&#10;#&#9;src/models/auth.js&#10;#&#9;src/routes/Index.js">
<created>1491470156951</created>
<option name="number" value="00016" />
<option name="presentableId" value="LOCAL-00016" />
<option name="project" value="LOCAL" />
<updated>1491470156951</updated>
</task>
<task id="LOCAL-00017" summary="Merge remote-tracking branch 'origin/master'&#10;&#10;# Conflicts:&#10;#&#9;src/models/auth.js&#10;#&#9;src/routes/Index.js">
<created>1491470479520</created>
<option name="number" value="00017" />
<option name="presentableId" value="LOCAL-00017" />
<option name="project" value="LOCAL" />
<updated>1491470479520</updated>
</task>
<task id="LOCAL-00018" summary="Merge remote-tracking branch 'origin/master'&#10;&#10;# Conflicts:&#10;#&#9;src/models/auth.js&#10;#&#9;src/routes/Index.js">
<created>1491470717640</created>
<option name="number" value="00018" />
<option name="presentableId" value="LOCAL-00018" />
<option name="project" value="LOCAL" />
<updated>1491470717640</updated>
</task>
<option name="localTasksCounter" value="19" />
<servers /> <servers />
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="89421000" /> <option name="totallyTimeSpent" value="91792000" />
</component> </component>
<component name="TodoView" selected-index="3"> <component name="TodoView" selected-index="3">
<todo-panel id="selected-file"> <todo-panel id="selected-file">
...@@ -607,25 +770,36 @@ ...@@ -607,25 +770,36 @@
</todo-panel> </todo-panel>
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="-8" y="-8" width="1936" height="1176" extended-state="0" /> <frame x="0" y="23" width="1440" height="815" extended-state="6" />
<layout> <layout>
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25237092" sideWeight="0.6706587" order="0" side_tool="false" content_ui="combo" /> <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25229034" sideWeight="0.6557789" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917467" sideWeight="0.49578503" order="6" side_tool="false" content_ui="tabs" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917467" sideWeight="0.49578503" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917467" sideWeight="0.5021075" order="7" side_tool="true" content_ui="tabs" /> <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4495159" sideWeight="0.51867515" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917467" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917467" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.19865642" sideWeight="0.49789253" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4495159" sideWeight="0.48132488" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.2428023" sideWeight="0.49789253" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24204703" sideWeight="0.48696265" order="7" side_tool="false" content_ui="tabs" />
<window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25237092" sideWeight="0.32934132" order="2" side_tool="true" content_ui="tabs" /> <window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25229034" sideWeight="0.34422112" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.22744721" sideWeight="0.49367756" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.22544952" sideWeight="0.48766738" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917467" sideWeight="0.49578503" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917467" sideWeight="0.5021075" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.19865642" sideWeight="0.49789253" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.2428023" sideWeight="0.49789253" order="7" side_tool="false" content_ui="tabs" />
<window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25237092" sideWeight="0.32934132" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.22744721" sideWeight="0.49367756" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25237092" sideWeight="0.6706587" order="0" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917467" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
</layout> </layout>
<layout-to-restore> <layout-to-restore>
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917467" sideWeight="0.49578503" order="6" side_tool="false" content_ui="tabs" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32917467" sideWeight="0.49578503" order="6" side_tool="false" content_ui="tabs" />
...@@ -662,7 +836,9 @@ ...@@ -662,7 +836,9 @@
<MESSAGE value="i18n" /> <MESSAGE value="i18n" />
<MESSAGE value="error.messages" /> <MESSAGE value="error.messages" />
<MESSAGE value="reformat code" /> <MESSAGE value="reformat code" />
<option name="LAST_COMMIT_MESSAGE" value="reformat code" /> <MESSAGE value="Merge remote-tracking branch 'origin/master'&#10;&#10;# Conflicts:&#10;#&#9;src/models/auth.js&#10;#&#9;src/routes/Index.js" />
<MESSAGE value="travis" />
<option name="LAST_COMMIT_MESSAGE" value="travis" />
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager> <breakpoint-manager>
...@@ -673,7 +849,6 @@ ...@@ -673,7 +849,6 @@
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="javascript"> <line-breakpoint enabled="true" type="javascript">
<url>file://$PROJECT_DIR$/src/router.js</url> <url>file://$PROJECT_DIR$/src/router.js</url>
<properties />
<option name="timeStamp" value="3" /> <option name="timeStamp" value="3" />
</line-breakpoint> </line-breakpoint>
</breakpoints> </breakpoints>
...@@ -682,35 +857,6 @@ ...@@ -682,35 +857,6 @@
<watches-manager /> <watches-manager />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/router.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209">
<caret line="25" column="30" lean-forward="false" selection-start-line="25" selection-start-column="30" selection-end-line="25" selection-end-column="30" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/Register.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="38">
<caret line="2" column="33" lean-forward="false" selection-start-line="2" selection-start-column="33" selection-end-line="2" selection-end-column="33" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/Profiles.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/services/auth.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="456">
<caret line="25" column="28" lean-forward="false" selection-start-line="25" selection-start-column="28" selection-end-line="25" selection-end-column="28" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/config.js"> <entry file="file://$PROJECT_DIR$/src/config.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="38"> <state relative-caret-position="38">
...@@ -771,26 +917,21 @@ ...@@ -771,26 +917,21 @@
</entry> </entry>
<entry file="file://$PROJECT_DIR$/.editorconfig"> <entry file="file://$PROJECT_DIR$/.editorconfig">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="171"> <state relative-caret-position="210">
<caret line="9" column="20" lean-forward="false" selection-start-line="9" selection-start-column="20" selection-end-line="9" selection-end-column="20" /> <caret line="14" column="32" lean-forward="true" selection-start-line="14" selection-start-column="32" selection-end-line="14" selection-end-column="32" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/.eslintrc"> <entry file="file://$PROJECT_DIR$/.eslintrc">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="418"> <state relative-caret-position="242">
<caret line="22" column="22" lean-forward="true" selection-start-line="22" selection-start-column="22" selection-end-line="22" selection-end-column="22" /> <caret line="27" column="23" lean-forward="false" selection-start-line="27" selection-start-column="23" selection-end-line="27" selection-end-column="23" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/routes/IndexPage.js" /> <entry file="file://$PROJECT_DIR$/src/routes/IndexPage.js" />
<entry file="file://$PROJECT_DIR$/public/index.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209">
<caret line="11" column="0" lean-forward="false" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/components/Haha.css" /> <entry file="file://$PROJECT_DIR$/src/components/Haha.css" />
<entry file="file://$PROJECT_DIR$/src/components/Haha.js" /> <entry file="file://$PROJECT_DIR$/src/components/Haha.js" />
<entry file="file://$PROJECT_DIR$/src/models/example.js" /> <entry file="file://$PROJECT_DIR$/src/models/example.js" />
...@@ -799,7 +940,6 @@ ...@@ -799,7 +940,6 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="247"> <state relative-caret-position="247">
<caret line="13" column="0" lean-forward="false" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" /> <caret line="13" column="0" lean-forward="false" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -807,7 +947,6 @@ ...@@ -807,7 +947,6 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="57"> <state relative-caret-position="57">
<caret line="3" column="47" lean-forward="false" selection-start-line="3" selection-start-column="36" selection-end-line="3" selection-end-column="47" /> <caret line="3" column="47" lean-forward="false" selection-start-line="3" selection-start-column="36" selection-end-line="3" selection-end-column="47" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -823,37 +962,6 @@ ...@@ -823,37 +962,6 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/Register.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-2747">
<caret line="5" column="0" lean-forward="false" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
<folding>
<element signature="e#0#70#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/Reset.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="20" column="17" lean-forward="true" selection-start-line="20" selection-start-column="17" selection-end-line="20" selection-end-column="17" />
<folding>
<element signature="e#0#63#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/Verify.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="399">
<caret line="21" column="0" lean-forward="true" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
<folding>
<element signature="e#0#66#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -861,17 +969,6 @@ ...@@ -861,17 +969,6 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="57"> <state relative-caret-position="57">
<caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" /> <caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-263">
<caret line="15" column="33" lean-forward="true" selection-start-line="15" selection-start-column="33" selection-end-line="15" selection-end-column="33" />
<folding>
<element signature="e#0#31#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -879,11 +976,7 @@ ...@@ -879,11 +976,7 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="95"> <state relative-caret-position="95">
<caret line="15" column="38" lean-forward="true" selection-start-line="15" selection-start-column="38" selection-end-line="15" selection-end-column="38" /> <caret line="15" column="38" lean-forward="true" selection-start-line="15" selection-start-column="38" selection-end-line="15" selection-end-column="38" />
<folding> <folding />
<marker date="1491463325049" expanded="true" signature="901:918" ph="&lt;Route/&gt;" />
<marker date="1491463325049" expanded="true" signature="901:932" ph="&lt;Router/&gt;" />
<marker date="1491463325049" expanded="true" signature="901:939" ph="{...}" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -901,7 +994,6 @@ ...@@ -901,7 +994,6 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="171"> <state relative-caret-position="171">
<caret line="9" column="0" lean-forward="false" selection-start-line="9" selection-start-column="0" selection-end-line="9" selection-end-column="0" /> <caret line="9" column="0" lean-forward="false" selection-start-line="9" selection-start-column="0" selection-end-line="9" selection-end-column="0" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -929,7 +1021,6 @@ ...@@ -929,7 +1021,6 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209"> <state relative-caret-position="209">
<caret line="14" column="0" lean-forward="false" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" /> <caret line="14" column="0" lean-forward="false" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -947,128 +1038,206 @@ ...@@ -947,128 +1038,206 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="513"> <state relative-caret-position="513">
<caret line="27" column="26" lean-forward="true" selection-start-line="27" selection-start-column="26" selection-end-line="27" selection-end-column="26" /> <caret line="27" column="26" lean-forward="true" selection-start-line="27" selection-start-column="26" selection-end-line="27" selection-end-column="26" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/services/user.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="9" column="6" lean-forward="false" selection-start-line="9" selection-start-column="6" selection-end-line="9" selection-end-column="6" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/services/upload.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="6" column="33" lean-forward="false" selection-start-line="6" selection-start-column="33" selection-end-line="6" selection-end-column="33" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/common.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="266">
<caret line="14" column="6" lean-forward="false" selection-start-line="14" selection-start-column="6" selection-end-line="14" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/Login.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="266">
<caret line="45" column="77" lean-forward="false" selection-start-line="45" selection-start-column="77" selection-end-line="45" selection-end-column="77" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/services/auth.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-220">
<caret line="13" column="5" lean-forward="false" selection-start-line="13" selection-start-column="5" selection-end-line="13" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/auth.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="437">
<caret line="23" column="20" lean-forward="false" selection-start-line="23" selection-start-column="20" selection-end-line="23" selection-end-column="20" />
<folding> <folding>
<element signature="e#0#31#0" expanded="false" /> <element signature="e#0#31#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/routes/Forgot.js"> <entry file="file://$PROJECT_DIR$/src/utils/request.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="304"> <state relative-caret-position="267">
<caret line="16" column="40" lean-forward="false" selection-start-line="16" selection-start-column="38" selection-end-line="16" selection-end-column="40" /> <caret line="46" column="2" lean-forward="false" selection-start-line="46" selection-start-column="2" selection-end-line="46" selection-end-column="2" />
<folding> <folding>
<element signature="e#0#62#0" expanded="true" /> <element signature="e#0#30#0" expanded="false" />
<marker date="1491464475095" expanded="true" signature="319:2128" ph="{...}" />
<marker date="1491464475095" expanded="true" signature="778:2126" ph="{...}" />
<marker date="1491464475095" expanded="true" signature="1040:2102" ph="&lt;Spin/&gt;" />
<marker date="1491464475095" expanded="true" signature="1088:2086" ph="&lt;Form/&gt;" />
<marker date="1491464475095" expanded="true" signature="1161:1380" ph="&lt;Steps/&gt;" />
<marker date="1491464475095" expanded="true" signature="1394:1430" ph="&lt;FormItem/&gt;" />
<marker date="1491464475095" expanded="true" signature="1394:1763" ph="&lt;FormItem/&gt;" />
<marker date="1491464475095" expanded="true" signature="1477:1588" ph="{...}" />
<marker date="1491464475095" expanded="true" signature="1777:1965" ph="&lt;FormItem/&gt;" />
<marker date="1491464475095" expanded="true" signature="1802:1941" ph="&lt;Button/&gt;" />
<marker date="1491464475095" expanded="true" signature="1979:2068" ph="&lt;div/&gt;" />
<marker date="1491464475095" expanded="true" signature="2162:2318" ph="{...}" />
<marker date="1491464475095" expanded="true" signature="2277:2315" ph="{&quot;loading&quot;: loading...}" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/i18n.json"> <entry file="file://$PROJECT_DIR$/src/utils/sso.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="267"> <state relative-caret-position="120">
<caret line="103" column="13" lean-forward="true" selection-start-line="103" selection-start-column="5" selection-end-line="103" selection-end-column="13" /> <caret line="8" column="1" lean-forward="true" selection-start-line="8" selection-start-column="1" selection-end-line="8" selection-end-column="1" />
<folding>
<element signature="e#0#28#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/index.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" column="2" lean-forward="false" selection-start-line="2" selection-start-column="2" selection-end-line="2" selection-end-column="19" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/routes/Activate.js"> <entry file="file://$PROJECT_DIR$/src/index.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="570"> <state relative-caret-position="225">
<caret line="30" column="1" lean-forward="false" selection-start-line="30" selection-start-column="1" selection-end-line="30" selection-end-column="1" /> <caret line="15" column="33" lean-forward="false" selection-start-line="15" selection-start-column="33" selection-end-line="15" selection-end-column="33" />
<folding> <folding>
<element signature="e#0#30#0" expanded="false" /> <element signature="e#0#31#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/services/user.js"> <entry file="file://$PROJECT_DIR$/src/routes/Index.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="171"> <state relative-caret-position="115">
<caret line="9" column="6" lean-forward="false" selection-start-line="9" selection-start-column="6" selection-end-line="9" selection-end-column="6" /> <caret line="134" column="13" lean-forward="false" selection-start-line="134" selection-start-column="13" selection-end-line="134" selection-end-column="13" />
<folding>
<element signature="e#0#36#0" expanded="true" />
<marker date="1491471996000" expanded="true" signature="2311:3776" ph="{...}" />
<marker date="1491471996000" expanded="true" signature="2482:3513" ph="&lt;Header/&gt;" />
<marker date="1491471996000" expanded="true" signature="2549:2690" ph="&lt;Link/&gt;" />
<marker date="1491471996000" expanded="true" signature="2700:2994" ph="&lt;Menu/&gt;" />
<marker date="1491471996000" expanded="true" signature="2856:2978" ph="&lt;Menu.Item/&gt;" />
<marker date="1491471996000" expanded="true" signature="2888:2955" ph="&lt;Link/&gt;" />
<marker date="1491471996000" expanded="true" signature="3004:3497" ph="&lt;Menu/&gt;" />
<marker date="1491471996000" expanded="true" signature="3231:3461" ph="&lt;Menu.Item/&gt;" />
<marker date="1491471996000" expanded="true" signature="3263:3438" ph="&lt;div/&gt;" />
<marker date="1491471996000" expanded="true" signature="3297:3366" ph="{...}" />
<marker date="1491471996000" expanded="true" signature="3521:3629" ph="&lt;Particles/&gt;" />
<marker date="1491471996000" expanded="true" signature="3579:3619" ph="{&quot;position&quot;: 'fixed'...}" />
<marker date="1491471996000" expanded="true" signature="3654:3758" ph="&lt;Footer/&gt;" />
<marker date="1491471996000" expanded="true" signature="3810:3892" ph="{...}" />
<marker date="1491471996000" expanded="true" signature="3870:3889" ph="{&quot;messages&quot;: messages...}" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/public/index.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240">
<caret line="16" column="0" lean-forward="false" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/services/upload.js"> <entry file="file://$PROJECT_DIR$/i18n.json">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="122">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="84" column="16" lean-forward="false" selection-start-line="84" selection-start-column="16" selection-end-line="84" selection-end-column="16" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/models/common.js"> <entry file="file://$PROJECT_DIR$/.travis.yml">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="266"> <state relative-caret-position="182">
<caret line="14" column="6" lean-forward="false" selection-start-line="14" selection-start-column="6" selection-end-line="14" selection-end-column="6" /> <caret line="18" column="31" lean-forward="false" selection-start-line="18" selection-start-column="31" selection-end-line="18" selection-end-column="31" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/models/user.js"> <entry file="file://$PROJECT_DIR$/src/models/user.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3876"> <state relative-caret-position="198">
<caret line="208" column="24" lean-forward="false" selection-start-line="208" selection-start-column="24" selection-end-line="208" selection-end-column="24" /> <caret line="212" column="61" lean-forward="true" selection-start-line="212" selection-start-column="61" selection-end-line="212" selection-end-column="61" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/routes/Login.js"> <entry file="file://$PROJECT_DIR$/src/routes/Activate.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="266"> <state relative-caret-position="40">
<caret line="45" column="77" lean-forward="false" selection-start-line="45" selection-start-column="77" selection-end-line="45" selection-end-column="77" /> <caret line="16" column="26" lean-forward="false" selection-start-line="16" selection-start-column="26" selection-end-line="16" selection-end-column="26" />
<folding /> <folding>
<element signature="e#0#30#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/routes/Profiles.js"> <entry file="file://$PROJECT_DIR$/src/routes/Profiles.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380"> <state relative-caret-position="172">
<caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" /> <caret line="119" column="34" lean-forward="false" selection-start-line="119" selection-start-column="34" selection-end-line="119" selection-end-column="34" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/Register.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1174">
<caret line="62" column="46" lean-forward="true" selection-start-line="62" selection-start-column="46" selection-end-line="62" selection-end-column="46" />
<folding> <folding>
<element signature="e#0#61#0" expanded="true" /> <marker date="1491472843000" expanded="true" signature="1495:1562" ph="{&quot;validateStatus&quot;: checkEmail...}" />
<marker date="1491472843000" expanded="true" signature="2068:2193" ph="{&quot;placeholder&quot;: messages.username...}" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/routes/Index.js"> <entry file="file://$PROJECT_DIR$/src/routes/Reset.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="625"> <state relative-caret-position="33">
<caret line="158" column="11" lean-forward="true" selection-start-line="158" selection-start-column="11" selection-end-line="158" selection-end-column="11" /> <caret line="53" column="109" lean-forward="false" selection-start-line="53" selection-start-column="109" selection-end-line="53" selection-end-column="109" />
<folding> <folding>
<element signature="e#0#36#0" expanded="true" /> <element signature="e#0#55#0" expanded="true" />
<marker date="1491468814760" expanded="true" signature="3782:3786" ph="{&quot;messages&quot;: messages...}" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/services/auth.js"> <entry file="file://$PROJECT_DIR$/src/routes/Forgot.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="418"> <state relative-caret-position="92">
<caret line="22" column="0" lean-forward="true" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" /> <caret line="37" column="20" lean-forward="false" selection-start-line="37" selection-start-column="20" selection-end-line="37" selection-end-column="20" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/models/auth.js"> <entry file="file://$PROJECT_DIR$/src/routes/Verify.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="437"> <state relative-caret-position="123">
<caret line="23" column="20" lean-forward="false" selection-start-line="23" selection-start-column="20" selection-end-line="23" selection-end-column="20" /> <caret line="71" column="18" lean-forward="false" selection-start-line="71" selection-start-column="18" selection-end-line="71" selection-end-column="18" />
<folding> <folding>
<element signature="e#0#31#0" expanded="true" /> <element signature="e#0#66#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
......
let publicPath = 'https://cdn01.moecube.com/accounts/' let publicPath = 'https://cdn01.moecube.com/accounts/'
let defineConf = { let defineConf = {
apiRoot: process.env["BUILD"] == 'development' ? 'http://114.215.243.95:8082' : 'https://api.moeube.com/accounts' apiRoot: process.env["API_ROOT"]
} }
export default { export default {
......
language: node_js
node_js: node
env:
global:
secure: NObcZ6fY1VQuoDfxRxKVOZ+p7g3LTDkonG4Ow4HIbx2g8wJ24mMqs9gN0J3Asbdbz68isDMpkKy7IW1mK9+N9fM0pBauqD1YMbglnEv+HhYjhiEsQdRdDM2nzDIjS4PCwavI1Da5TLhaUjSAM4lrHx7bVOK4YsvF3s8JEApS54QgSlbeJgvSbPcCiapl0VwwaL36cGndChc3tawq4xseuk4bP2NrTEd7ifYZMt+iojId+UuhRQk4w0HUlBhEDKiT/fLxeQDwMRv2WIdIPW7D7+Wo01iX+T0Ti629QhQBe/S76affkG6G085HIPin3VvXDQaiYbK4ALbc79O+9jqSxEFd9nwG8xbp2jezzvclUSXPhIyZe7VSRS6z1MdevlyQa56AUEP7My7IMqj8j7NPoUgrnVlKtR8WPHQacfAVkrcOIX+Tzwl2IMOCqonamDtJjUNX5xpYB+IEj+INvQmRqT2NicExGWj9LZp3L3kscwq1u+0hPzgoQ9yovE+OvLFNE/R5AE90GIaSlwXw4MqOeB+8l+ou2JzNZFJhHBvAsOFwQTloFz/pu7ichJ+P0KsMPteLFA4Btuo6bBu31K7R310CmlIdYJIeeybMuM6e6bG8IkbVcMq5skg9LNa64KuDG46oopwGLiWkdRwDzG3VmXGwVm+OF2EWZi/B0wIcTwY=
NODE_ENV: development
script: npm run build
before_deploy:
- curl --location --retry 5 --output ossutil 'https://github.com/mycard/ossutil/releases/download/1.0.0.Beta2/ossutil'
- chmod +x ossutil
- ./ossutil config --endpoint oss-cn-hangzhou.aliyuncs.com --access-key-id $ALIYUN_ID
--access-key-secret $ALIYUN_SECRET
deploy:
provider: script
script: ./ossutil cp -rf dist oss://mycard/accounts
skip_cleanup: true
on:
branch: master
...@@ -159,7 +159,6 @@ ...@@ -159,7 +159,6 @@
"i_not_found":"用户不存在", "i_not_found":"用户不存在",
"i_key_time_out":"此链接已过期", "i_key_time_out":"此链接已过期",
"i_key_invalid":"此链接已失效", "i_key_invalid":"此链接已失效",
"没毛用":"防逗号报错,上线删" "没毛用":"防逗号报错,上线删"
} }
......
{ {
"private": true, "private": true,
"scripts": { "scripts": {
"start": "cross-env BUILD=development roadhog server", "start": "cross-env API_ROOT=http://192.168.1.9:3000 roadhog server",
"build:dev": "cross-env BUILD=development roadhog build", "build:dev": "cross-env API_ROOT=http://114.215.243.95:8082 roadhog build",
"build": "roadhog build", "build": "cross-env API_ROOT=https://api.moeube.com/accounts roadhog build",
"lint": "eslint --ext .js src test", "lint": "eslint --ext .js src test",
"precommit": "npm run lint" "precommit": "npm run lint"
}, },
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="index.css" /> <link rel="stylesheet" href="index.css"/>
<link rel="icon" href="https://moecube.com/favicon.ico">
</head> </head>
<body> <body>
......
...@@ -18,7 +18,9 @@ class EmailForm extends React.Component { ...@@ -18,7 +18,9 @@ class EmailForm extends React.Component {
onSubmit = (e) => { onSubmit = (e) => {
const { form, dispatch, user: { id } } = this.props; const { form, dispatch, user: { id } } = this.props;
e && e.preventDefault(); if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => { form.validateFieldsAndScroll((err, values) => {
if (!err) { if (!err) {
console.log('Received values of form: ', values); console.log('Received values of form: ', values);
......
...@@ -18,6 +18,24 @@ class EmailForm extends React.Component { ...@@ -18,6 +18,24 @@ class EmailForm extends React.Component {
static contextTypes = { static contextTypes = {
intl: PropTypes.object.isRequired, intl: PropTypes.object.isRequired,
}; };
onSubmit = (e) => {
const { form, dispatch, user: { id } } = this.props;
if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => {
if (!err) {
console.log('Received values of form: ', values);
const { new_password, password } = values;
dispatch({ type: 'user/updateAccount', payload: { new_password, password, user_id: id } });
}
});
};
checkPassword = (rule, value, callback) => { checkPassword = (rule, value, callback) => {
const form = this.props.form; const form = this.props.form;
const { intl: { messages } } = this.context; const { intl: { messages } } = this.context;
...@@ -36,20 +54,6 @@ class EmailForm extends React.Component { ...@@ -36,20 +54,6 @@ class EmailForm extends React.Component {
callback(); callback();
}; };
onSubmit = (e) => {
const { form, dispatch, user: { id } } = this.props;
e && e.preventDefault();
form.validateFieldsAndScroll((err, values) => {
if (!err) {
console.log('Received values of form: ', values);
const { new_password, password } = values;
dispatch({ type: 'user/updateAccount', payload: { new_password, password, user_id: id } });
}
});
};
render() { render() {
const { form } = this.props; const { form } = this.props;
...@@ -131,7 +135,7 @@ class EmailForm extends React.Component { ...@@ -131,7 +135,7 @@ class EmailForm extends React.Component {
} }
function mapStateToProps(state, props) { function mapStateToProps(state) {
const { const {
user: { user }, user: { user },
} = state; } = state;
......
...@@ -18,7 +18,9 @@ class EmailForm extends React.Component { ...@@ -18,7 +18,9 @@ class EmailForm extends React.Component {
onSubmit = (e) => { onSubmit = (e) => {
const { form, dispatch, user: { id } } = this.props; const { form, dispatch, user: { id } } = this.props;
e && e.preventDefault(); if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => { form.validateFieldsAndScroll((err, values) => {
if (!err) { if (!err) {
console.log('Received values of form: ', values); console.log('Received values of form: ', values);
...@@ -59,7 +61,8 @@ class EmailForm extends React.Component { ...@@ -59,7 +61,8 @@ class EmailForm extends React.Component {
{getFieldDecorator('email', { ...emailProps.decorator })( {getFieldDecorator('email', { ...emailProps.decorator })(
<Input <Input
{...emailProps.input} {...emailProps.input}
onBlur={() => dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue(), id } })}/>, onBlur={() => dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue(), id } })}
/>,
)} )}
</FormItem> </FormItem>
......
...@@ -18,7 +18,9 @@ class EmailForm extends React.Component { ...@@ -18,7 +18,9 @@ class EmailForm extends React.Component {
onSubmit = (e) => { onSubmit = (e) => {
const { form, dispatch, user: { id } } = this.props; const { form, dispatch, user: { id } } = this.props;
e && e.preventDefault(); if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => { form.validateFieldsAndScroll((err, values) => {
if (!err) { if (!err) {
console.log('Received values of form: ', values); console.log('Received values of form: ', values);
......
/* global apiRoot */
export default { export default {
apiRoot: apiRoot apiRoot,
}; };
...@@ -11,7 +11,7 @@ import './index.less'; ...@@ -11,7 +11,7 @@ import './index.less';
// 1. Initialize // 1. Initialize
const app = dva({ const app = dva({
onError: (error, dispatch) => { onError: (error) => {
message.destroy(); message.destroy();
message.error(error.message); message.error(error.message);
}, },
......
html, body, :global(#root) { html, body, :global(#root) {
height: 100%; height: 100%;
min-height: 100%;
} }
:global { :global {
...@@ -21,4 +21,4 @@ html, body, :global(#root) { ...@@ -21,4 +21,4 @@ html, body, :global(#root) {
opacity: 0.01; opacity: 0.01;
transition: opacity 300ms ease-in; transition: opacity 300ms ease-in;
} }
} }
\ No newline at end of file
...@@ -22,8 +22,9 @@ export default { ...@@ -22,8 +22,9 @@ export default {
}, },
reducers: { reducers: {
signOut(state) { signOut(state) {
console.log('sign out');
localStorage.removeItem('token'); localStorage.removeItem('token');
location='/'; location.href = '/';
return state; return state;
}, },
change(state, action) { change(state, action) {
......
...@@ -144,7 +144,7 @@ export default { ...@@ -144,7 +144,7 @@ export default {
if (data.active) { if (data.active) {
yield put(routerRedux.replace('/profiles')); yield put(routerRedux.replace('/profiles'));
} else { } else {
yield put(routerRedux.replace('/verify')); yield put(routerRedux.replace('/signin'));
} }
} }
} catch (error) { } catch (error) {
...@@ -204,11 +204,19 @@ export default { ...@@ -204,11 +204,19 @@ export default {
const token = localStorage.getItem('token'); const token = localStorage.getItem('token');
if (token) { if (token) {
dispatch({ type: 'getAuthUser', payload: { token } }); dispatch({ type: 'getAuthUser', payload: { token } });
} else if (location.pathname === '/profiles') {
dispatch(routerRedux.replace('/signin'));
} }
history.listen(({ pathname }) => {
history.listen(({ pathname, query }) => {
if (pathname === '/') { if (pathname === '/') {
dispatch({ type: 'preLogin', payload: { token } }); dispatch({ type: 'preLogin', payload: { token } });
} }
if (pathname === '/reset' || pathname === '/activate') {
if (!query.key) {
message.error('缺少参数');
}
}
}); });
}, },
}, },
......
import { Redirect, Route, Router } from 'dva/router'; import { Route, Router } from 'dva/router';
import React from 'react'; import React from 'react';
import Active from './routes/Activate.js'; import Active from './routes/Activate.js';
......
...@@ -14,7 +14,7 @@ class Active extends React.Component { ...@@ -14,7 +14,7 @@ class Active extends React.Component {
render() { render() {
const { loading } = this.props; const { loading } = this.props;
return ( return (
<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', flex: 1 }}> <div style={{ display: 'flex', flex: 1, justifyContent: 'center', alignItems: 'center', height: '100%' }}>
<Button type="primary" icon="poweroff" loading={loading} onClick={this.handleClick}> <Button type="primary" icon="poweroff" loading={loading} onClick={this.handleClick}>
<Format id={'verify-email'}/> <Format id={'verify-email'}/>
</Button> </Button>
......
...@@ -14,9 +14,11 @@ class Login extends React.Component { ...@@ -14,9 +14,11 @@ class Login extends React.Component {
}; };
onSubmitLogin = (e) => { onSubmitLogin = (e) => {
const { form, dispatch, params: { id } } = this.props; const { form, dispatch } = this.props;
e && e.preventDefault(); if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => { form.validateFieldsAndScroll((err, values) => {
if (!err) { if (!err) {
console.log('Received values of form: ', values); console.log('Received values of form: ', values);
...@@ -33,7 +35,7 @@ class Login extends React.Component { ...@@ -33,7 +35,7 @@ class Login extends React.Component {
const { loading } = this.props; const { loading } = this.props;
const { intl: { messages } } = this.context; const { intl: { messages } } = this.context;
return ( return (
<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%'}}> <div style={{ display: 'flex', flex: 1, justifyContent: 'center', alignItems: 'center', height: '100%' }}>
<Spin spinning={loading} delay={100}> <Spin spinning={loading} delay={100}>
<Form onSubmit={this.onSubmitLogin} className="login-form"> <Form onSubmit={this.onSubmitLogin} className="login-form">
...@@ -46,7 +48,10 @@ class Login extends React.Component { ...@@ -46,7 +48,10 @@ class Login extends React.Component {
{getFieldDecorator('email', { {getFieldDecorator('email', {
rules: [{ required: true, message: 'Please input your username or email!' }], rules: [{ required: true, message: 'Please input your username or email!' }],
})( })(
<Input prefix={<Icon type="user" style={{ fontSize: 13 }}/>} placeholder={messages['email-address-or-username']}/>, <Input
prefix={<Icon type="user" style={{ fontSize: 13 }}/>}
placeholder={messages['email-address-or-username']}
/>,
)} )}
</FormItem> </FormItem>
......
...@@ -139,12 +139,12 @@ function Index({ children, messages, dispatch }) { ...@@ -139,12 +139,12 @@ function Index({ children, messages, dispatch }) {
</Menu> </Menu>
); );
return ( return (
<div style={{ height: '100%'}}> <div style={{ display: 'flex', flexDirection: 'column', flex: 1, minHeight: '100%' }}>
<DocumentTitle title={messages.title || 'Moe Cube'} /> <DocumentTitle title={messages.title || 'Moe Cube'}/>
<Header style={{ display: 'flex', alignItems: 'center' }}> <Header style={{ display: 'flex', alignItems: 'center' }}>
<Link to="/" style={{ marginTop: '20px' }}> <Link to="/" style={{ marginTop: '20px' }}>
<img src={logo} style={{ width: '140px', height: '44px' }}/> <img alt="logo" src={logo} style={{ width: '140px', height: '44px' }}/>
</Link> </Link>
<Menu <Menu
...@@ -167,7 +167,11 @@ function Index({ children, messages, dispatch }) { ...@@ -167,7 +167,11 @@ function Index({ children, messages, dispatch }) {
style={{ lineHeight: '64px', position: 'absolute', right: '50px' }} style={{ lineHeight: '64px', position: 'absolute', right: '50px' }}
> >
{localStorage.getItem('token') ? (<Menu.Item key="1"> {localStorage.getItem('token') ? (<Menu.Item key="1">
<div onClick={() => { dispatch({ type : 'auth/signOut' }) }}> <div
onClick={() => {
dispatch({ type: 'auth/signOut' });
}}
>
<Format id="sign-out"/> <Format id="sign-out"/>
</div> </div>
</Menu.Item>) : ('') </Menu.Item>) : ('')
...@@ -196,7 +200,7 @@ function Index({ children, messages, dispatch }) { ...@@ -196,7 +200,7 @@ function Index({ children, messages, dispatch }) {
/> />
{children} {children}
<Footer style={{ position: 'absolute', width: '100%'}}> <Footer style={{ width: '100%' }}>
<div>© MoeCube 2017 all right reserved.</div> <div>© MoeCube 2017 all right reserved.</div>
</Footer> </Footer>
</div> </div>
......
.particles { .particles {
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
z-index: 1; z-index: 1;
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
\ No newline at end of file
...@@ -35,7 +35,7 @@ class Login extends React.Component { ...@@ -35,7 +35,7 @@ class Login extends React.Component {
const { intl: { messages } } = this.context; const { intl: { messages } } = this.context;
return ( return (
<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}> <div style={{ display: 'flex', flex: 1, justifyContent: 'center', alignItems: 'center', height: '100%' }}>
<Spin spinning={loading} delay={100}> <Spin spinning={loading} delay={100}>
<Form onSubmit={this.onSubmitLogin} className="login-form"> <Form onSubmit={this.onSubmitLogin} className="login-form">
...@@ -43,14 +43,20 @@ class Login extends React.Component { ...@@ -43,14 +43,20 @@ class Login extends React.Component {
{getFieldDecorator('account', { {getFieldDecorator('account', {
rules: [{ required: true, message: messages['Please input your account!'] }], rules: [{ required: true, message: messages['Please input your account!'] }],
})( })(
<Input prefix={<Icon type="user" style={{ fontSize: 13 }}/>} placeholder={messages['email-address-or-username']}/>, <Input
prefix={<Icon type="user" style={{ fontSize: 13 }}/>}
placeholder={messages['email-address-or-username']}
/>,
)} )}
</FormItem> </FormItem>
<FormItem> <FormItem>
{getFieldDecorator('password', { {getFieldDecorator('password', {
rules: [{ required: true, message: messages['Please-input-your-Password!'] }], rules: [{ required: true, message: messages['Please-input-your-Password!'] }],
})( })(
<Input prefix={<Icon type="lock" style={{ fontSize: 13 }}/>} type="password" placeholder={messages.password}/>, <Input
prefix={<Icon type="lock" style={{ fontSize: 13 }}/>} type="password"
placeholder={messages.password}
/>,
)} )}
</FormItem> </FormItem>
<FormItem> <FormItem>
......
...@@ -19,11 +19,11 @@ const formItemLayout = { ...@@ -19,11 +19,11 @@ const formItemLayout = {
wrapperCol: { span: 15 }, wrapperCol: { span: 15 },
}; };
function getBase64(img, callback) { // function getBase64(img, callback) {
const reader = new FileReader(); // const reader = new FileReader();
reader.addEventListener('load', () => callback(reader.result)); // reader.addEventListener('load', () => callback(reader.result));
reader.readAsDataURL(img); // reader.readAsDataURL(img);
} // }
class Profiles extends React.Component { class Profiles extends React.Component {
...@@ -31,15 +31,20 @@ class Profiles extends React.Component { ...@@ -31,15 +31,20 @@ class Profiles extends React.Component {
intl: PropTypes.object.isRequired, intl: PropTypes.object.isRequired,
}; };
handleUpload = () => { onUpdateSubmit = (e) => {
if (typeof this.cropper.getCroppedCanvas() === 'undefined') { const { form, dispatch, user: { id } } = this.props;
return;
if (e) {
e.preventDefault();
} }
const { user: { id } } = this.props; form.validateFieldsAndScroll((err, values) => {
if (!err) {
console.log('Received values of form: ', values);
this.cropper.getCroppedCanvas().toBlob(blob => { const { username, name, password } = values;
console.log(blob);
this.props.dispatch({ type: 'upload/upload', payload: { image: blob, user_id: id } }); dispatch({ type: 'user/updateProfile', payload: { username, name, password, user_id: id } });
}
}); });
}; };
...@@ -57,18 +62,15 @@ class Profiles extends React.Component { ...@@ -57,18 +62,15 @@ class Profiles extends React.Component {
reader.readAsDataURL(files[0]); reader.readAsDataURL(files[0]);
}; };
onUpdateSubmit = (e) => { handleUpload = () => {
const { form, dispatch, user: { id }, } = this.props; if (typeof this.cropper.getCroppedCanvas() === 'undefined') {
return;
e && e.preventDefault(); }
form.validateFieldsAndScroll((err, values) => { const { user: { id } } = this.props;
if (!err) {
console.log('Received values of form: ', values);
const { username, name, password } = values;
dispatch({ type: 'user/updateProfile', payload: { username, name, password, user_id: id } }); this.cropper.getCroppedCanvas().toBlob((blob) => {
} console.log(blob);
this.props.dispatch({ type: 'upload/upload', payload: { image: blob, user_id: id } });
}); });
}; };
...@@ -91,7 +93,7 @@ class Profiles extends React.Component { ...@@ -91,7 +93,7 @@ class Profiles extends React.Component {
}, },
}; };
/* eslint-disable jsx-a11y/label-has-for */
return ( return (
<Spin spinning={loading} delay={100}> <Spin spinning={loading} delay={100}>
<Tabs defaultActiveKey="1" className="app-detail-nav"> <Tabs defaultActiveKey="1" className="app-detail-nav">
...@@ -99,37 +101,34 @@ class Profiles extends React.Component { ...@@ -99,37 +101,34 @@ class Profiles extends React.Component {
<Form onSubmit={this.onUpdateSubmit}> <Form onSubmit={this.onUpdateSubmit}>
<FormItem style={{ display: 'flex', justifyContent: 'center' }}> <FormItem style={{ display: 'flex', justifyContent: 'center' }}>
{ <div style={{ display: isUpload ? 'flex' : 'none', flexDirection: 'column' }}>
isUpload ? <Cropper
<div> ref={(cropper) => {
<Cropper this.cropper = cropper;
ref={cropper => { }}
this.cropper = cropper; src={imageUrl || defaultAvatar}
}} style={{ height: '20vw', width: '20vw' }}
src={ imageUrl || defaultAvatar} aspectRatio={1 / 1}
style={{ height: '20vw', width: '20vw' }} guides
aspectRatio={1 / 1} />
guides={true} <Button type="primary" onClick={this.handleUpload}>
/> <Icon type="upload"/> upload
<Button> </Button>
<label > </div>
<Icon type="plus"/> add file
<input type="file" onChange={this.onGetFile} ref={file => {
this.file = file;
}} style={{ display: 'none' }}/>
</label>
</Button>
<Button type="primary" onClick={this.handleUpload}>
<Icon type="upload"/> upload
</Button>
</div>
:
<img src={avatar || imageUrl || defaultAvatar}
style={{ height: '256px', width: '256px' }}
onClick={() => dispatch({ type: 'upload/start' })}
/>
}
<div style={{ display: !isUpload ? 'flex' : 'none', flexDirection: 'column' }}>
<img alt="avatar" src={avatar || imageUrl || defaultAvatar}/>
<Button onClick={() => { dispatch({ type: 'upload/start' }); }}>
<label>
<Icon type="plus"/> Change Avatar
<input
type="file" onChange={this.onGetFile} ref={(file) => {
this.file = file;
}} style={{ display: 'none' }}
/>
</label>
</Button>
</div>
</FormItem> </FormItem>
<FormItem {...nameProps.fromItem}> <FormItem {...nameProps.fromItem}>
......
import { Button, Form, Icon, Input, Select, Spin, Steps } from 'antd'; import { Button, Form, Icon, Input, Spin, Steps } from 'antd';
import { connect } from 'dva'; import { connect } from 'dva';
import { Link } from 'dva/router'; import { Link } from 'dva/router';
import React, { PropTypes } from 'react'; import React, { PropTypes } from 'react';
import { FormattedMessage as Format } from 'react-intl'; import { FormattedMessage as Format } from 'react-intl';
const FormItem = Form.Item; const FormItem = Form.Item;
const Option = Select.Option;
const Step = Steps.Step; const Step = Steps.Step;
...@@ -16,14 +15,16 @@ class Register extends React.Component { ...@@ -16,14 +15,16 @@ class Register extends React.Component {
}; };
onSubmitLogin = (e) => { onSubmitLogin = (e) => {
const { form, dispatch, params: { id } } = this.props; const { form, dispatch } = this.props;
e && e.preventDefault(); if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => { form.validateFieldsAndScroll((err, values) => {
if (!err) { if (!err) {
console.log('Received values of form: ', values); console.log('Received values of form: ', values);
const { email, username, password, } = values; const { email, username, password } = values;
dispatch({ type: 'auth/register', payload: { email, username, password } }); dispatch({ type: 'auth/register', payload: { email, username, password } });
} }
...@@ -49,35 +50,38 @@ class Register extends React.Component { ...@@ -49,35 +50,38 @@ class Register extends React.Component {
}; };
render() { render() {
const { dispatch, register, form, checkEmail, checkUsername, isEmailExists, isUserNameExists, isRegisterSubmit, loading } = this.props; const {
const { getFieldDecorator, } = form; dispatch, form, checkEmail, checkUsername,
const { email, username, password } = register; isEmailExists, isUserNameExists, loading,
} = this.props;
const { getFieldDecorator } = form;
const { intl: { messages } } = this.context; const { intl: { messages } } = this.context;
const emailProps = { const emailProps = {
hasFeedback: true, hasFeedback: true,
validateStatus: checkEmail, validateStatus: checkEmail,
help: isEmailExists ? messages['i_email_exists'] : '', extra: isEmailExists ? messages.i_email_exists : '',
}; };
const emailInputProps = { const emailInputProps = {
onBlur: () => dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue() } }), onBlur: () => !form.getFieldError('email') && dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue() } }),
placeholder: messages.email, placeholder: messages.email,
}; };
const usernameProps = { const usernameProps = {
hasFeedback: true, hasFeedback: true,
validateStatus: checkUsername, validateStatus: checkUsername,
help: isUserNameExists ? 'username exists' : '', extra: isUserNameExists ? 'username exists' : '',
}; };
const usernameInputProps = { const usernameInputProps = {
onBlur: () => dispatch({ type: 'auth/checkUsername', payload: { ...form.getFieldsValue() } }), onBlur: () => !form.getFieldError('username') && dispatch({ type: 'auth/checkUsername', payload: { ...form.getFieldsValue() } }),
placeholder: messages.username, placeholder: messages.username,
}; };
return ( return (
<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%'}}> <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>
<Spin spinning={loading} delay={100}> <Spin spinning={loading} delay={100}>
<Steps size="large" current={0}> <Steps size="large" current={0}>
...@@ -86,7 +90,7 @@ class Register extends React.Component { ...@@ -86,7 +90,7 @@ class Register extends React.Component {
</Steps> </Steps>
<Form onSubmit={this.onSubmitLogin} className="login-form" style={{ marginTop: '24px' }}> <Form onSubmit={this.onSubmitLogin} className="login-form" style={{ marginTop: '24px' }}>
<FormItem {...emailProps} > <FormItem {...emailProps} >
{getFieldDecorator('email', { {getFieldDecorator('email', {
rules: [{ rules: [{
required: true, required: true,
...@@ -123,7 +127,8 @@ class Register extends React.Component { ...@@ -123,7 +127,8 @@ class Register extends React.Component {
<Input <Input
prefix={<Icon type="lock" style={{ fontSize: 13 }}/>} prefix={<Icon type="lock" style={{ fontSize: 13 }}/>}
type="password" type="password"
placeholder={messages.password}/>, placeholder={messages.password}
/>,
)} )}
</FormItem> </FormItem>
...@@ -141,7 +146,8 @@ class Register extends React.Component { ...@@ -141,7 +146,8 @@ class Register extends React.Component {
prefix={<Icon type="lock" style={{ fontSize: 13 }}/>} prefix={<Icon type="lock" style={{ fontSize: 13 }}/>}
type="password" type="password"
onBlur={this.handleConfirmBlur} onBlur={this.handleConfirmBlur}
placeholder={messages['password-again']}/>, placeholder={messages['password-again']}
/>,
)} )}
</FormItem> </FormItem>
...@@ -163,7 +169,10 @@ class Register extends React.Component { ...@@ -163,7 +169,10 @@ class Register extends React.Component {
function mapStateToProps(state) { function mapStateToProps(state) {
const { const {
auth: { register, checkEmail, checkUsername, isEmailExists, isUserNameExists, isRegisterSubmit }, auth: {
register, checkEmail, checkUsername, isEmailExists,
isUserNameExists, isRegisterSubmit,
},
} = state; } = state;
const loading = state.loading.global || false; const loading = state.loading.global || false;
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
} }
} }
.action { .action {
margin-top: 24px; margin-top: 24px;
} }
\ No newline at end of file
import { Button, Form, Icon, Input, Select, Spin } from 'antd'; import { Button, Form, Icon, Input, Spin } from 'antd';
import { connect } from 'dva'; import { connect } from 'dva';
import React, { PropTypes } from 'react'; import React, { PropTypes } from 'react';
import { FormattedMessage as Format } from 'react-intl'; import { FormattedMessage as Format } from 'react-intl';
const FormItem = Form.Item; const FormItem = Form.Item;
const Option = Select.Option;
class Reset extends React.Component { class Reset extends React.Component {
...@@ -16,7 +14,9 @@ class Reset extends React.Component { ...@@ -16,7 +14,9 @@ class Reset extends React.Component {
onSubmitReset = (e) => { onSubmitReset = (e) => {
const { form, dispatch, location: { query: { key, user_id } } } = this.props; const { form, dispatch, location: { query: { key, user_id } } } = this.props;
e && e.preventDefault(); if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => { form.validateFieldsAndScroll((err, values) => {
if (!err) { if (!err) {
console.log('Received values of form: ', values); console.log('Received values of form: ', values);
...@@ -51,11 +51,11 @@ class Reset extends React.Component { ...@@ -51,11 +51,11 @@ class Reset extends React.Component {
const { intl: { messages } } = this.context; const { intl: { messages } } = this.context;
return ( return (
<div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}> <div style={{ display: 'flex', flex: 1, justifyContent: 'center', alignItems: 'center', height: '100%' }}>
<Spin spinning={isResetSubmit} delay={100}> <Spin spinning={isResetSubmit} delay={100}>
<Form onSubmit={this.onSubmitReset} className="login-form"> <Form onSubmit={this.onSubmitReset} className="login-form">
<FormItem> <FormItem>
<h1><Format id='reset-password2'/></h1> <h1><Format id="reset-password2"/></h1>
</FormItem> </FormItem>
<FormItem> <FormItem>
{getFieldDecorator('password', { {getFieldDecorator('password', {
...@@ -63,8 +63,10 @@ class Reset extends React.Component { ...@@ -63,8 +63,10 @@ class Reset extends React.Component {
}, { }, {
validator: this.checkConfirm, validator: this.checkConfirm,
})( })(
<Input prefix={<Icon type="lock" style={{ fontSize: 13 }}/>} type="password" <Input
placeholder={messages.password}/>, prefix={<Icon type="lock" style={{ fontSize: 13 }}/>} type="password"
placeholder={messages.password}
/>,
)} )}
</FormItem> </FormItem>
...@@ -81,7 +83,7 @@ class Reset extends React.Component { ...@@ -81,7 +83,7 @@ class Reset extends React.Component {
</FormItem> </FormItem>
<Button type="primary" htmlType="submit" className="login-form-button"> <Button type="primary" htmlType="submit" className="login-form-button">
<Format id='reset-password2'/> <Format id="reset-password2"/>
</Button> </Button>
</Form> </Form>
</Spin> </Spin>
...@@ -90,7 +92,7 @@ class Reset extends React.Component { ...@@ -90,7 +92,7 @@ class Reset extends React.Component {
} }
} }
function mapStateToProps(state, props) { function mapStateToProps(state) {
const { const {
auth: { isResetSubmit }, auth: { isResetSubmit },
} = state; } = state;
......
...@@ -4,6 +4,7 @@ import { routerRedux } from 'dva/router'; ...@@ -4,6 +4,7 @@ import { routerRedux } from 'dva/router';
import React, { PropTypes } from 'react'; import React, { PropTypes } from 'react';
import { FormattedMessage as Format } from 'react-intl'; import { FormattedMessage as Format } from 'react-intl';
import SubmitButton from '../components/SubmitButton'; import SubmitButton from '../components/SubmitButton';
const FormItem = Form.Item; const FormItem = Form.Item;
const Step = Steps.Step; const Step = Steps.Step;
...@@ -20,7 +21,9 @@ class Verify extends React.Component { ...@@ -20,7 +21,9 @@ class Verify extends React.Component {
onSubmit = (e) => { onSubmit = (e) => {
const { form, dispatch, input: { password }, user: { id } } = this.props; const { form, dispatch, input: { password }, user: { id } } = this.props;
e && e.preventDefault(); if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => { form.validateFieldsAndScroll((err, values) => {
if (!err) { if (!err) {
console.log('Received values of form: ', values); console.log('Received values of form: ', values);
...@@ -35,12 +38,14 @@ class Verify extends React.Component { ...@@ -35,12 +38,14 @@ class Verify extends React.Component {
onReSend = (e) => { onReSend = (e) => {
const { dispatch, input: { password }, user: { id, email } } = this.props; const { dispatch, input: { password }, user: { id, email } } = this.props;
e && e.preventDefault(); if (e) {
e.preventDefault();
}
dispatch({ type: 'user/updateEmail', payload: { email, password, user_id: id } }); dispatch({ type: 'user/updateEmail', payload: { email, password, user_id: id } });
}; };
render(select) { render() {
const { form, dispatch, user, checkEmail, isEmailExists, loading, input } = this.props; const { form, dispatch, user, checkEmail, isEmailExists, loading, input } = this.props;
const { getFieldDecorator } = form; const { getFieldDecorator } = form;
const { id, email } = user; const { id, email } = user;
...@@ -64,7 +69,8 @@ class Verify extends React.Component { ...@@ -64,7 +69,8 @@ class Verify extends React.Component {
return ( return (
<div <div
style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', flex: 1 }}> style={{ display: 'flex', flex: 1, justifyContent: 'center', alignItems: 'center', height: '100%' }}
>
<Spin spinning={loading} delay={100}> <Spin spinning={loading} delay={100}>
<Steps size="large" current={1}> <Steps size="large" current={1}>
...@@ -72,7 +78,7 @@ class Verify extends React.Component { ...@@ -72,7 +78,7 @@ class Verify extends React.Component {
<Step title={messages['verify-email']} icon={<Icon type="mail"/>}/> <Step title={messages['verify-email']} icon={<Icon type="mail"/>}/>
</Steps> </Steps>
{id && input['password'] ? {id && input.password ?
<Alert <Alert
style={{ marginTop: '24px' }} style={{ marginTop: '24px' }}
message={ message={
...@@ -93,8 +99,9 @@ class Verify extends React.Component { ...@@ -93,8 +99,9 @@ class Verify extends React.Component {
message={ message={
<div> <div>
<span style={{ marginRight: '10px' }}><Format id={'Please-sign-in'}/></span> <span style={{ marginRight: '10px' }}><Format id={'Please-sign-in'}/></span>
<Tag color="blue" onClick={ () => dispatch(routerRedux.replace('/signin'))}><Format <Tag color="blue" onClick={() => dispatch(routerRedux.replace('/signin'))}><Format
id={'sign-in'}/></Tag> id={'sign-in'}
/></Tag>
</div> </div>
} }
type="warning" type="warning"
...@@ -109,7 +116,8 @@ class Verify extends React.Component { ...@@ -109,7 +116,8 @@ class Verify extends React.Component {
{getFieldDecorator('email', { ...emailProps.decorator })( {getFieldDecorator('email', { ...emailProps.decorator })(
<Input <Input
{...emailProps.input} {...emailProps.input}
onBlur={() => dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue(), id } })}/>, onBlur={() => dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue(), id } })}
/>,
)} )}
</FormItem> </FormItem>
...@@ -125,7 +133,7 @@ class Verify extends React.Component { ...@@ -125,7 +133,7 @@ class Verify extends React.Component {
} }
} }
function mapStateToProps(state, props) { function mapStateToProps(state) {
const { const {
user: { user }, user: { user },
auth: { input, isEmailExists, checkEmail }, auth: { input, isEmailExists, checkEmail },
......
import request from '../utils/request'; import request from '../utils/request';
export async function login(params) { export async function login(params) {
return request(`/signin`, { return request('/signin', {
method: 'POST', method: 'POST',
body: JSON.stringify(params), body: JSON.stringify(params),
}); });
} }
export async function forgot(params) { export async function forgot(params) {
return request(`/forgot`, { return request('/forgot', {
method: 'POST', method: 'POST',
body: JSON.stringify(params), body: JSON.stringify(params),
}); });
} }
export async function register(params) { export async function register(params) {
return request(`/signup`, { return request('/signup', {
method: 'POST', method: 'POST',
body: JSON.stringify(params), body: JSON.stringify(params),
}); });
} }
export async function reset(params) { export async function reset(params) {
return request(`/reset`, { return request('/reset', {
method: 'PATCH', method: 'PATCH',
body: JSON.stringify(params), body: JSON.stringify(params),
}); });
} }
export async function activate(params) { export async function activate(params) {
return request(`/activate`, { return request('/activate', {
method: 'POST', method: 'POST',
body: JSON.stringify(params), body: JSON.stringify(params),
}); });
...@@ -50,7 +50,7 @@ export async function getUserByUsername(params) { ...@@ -50,7 +50,7 @@ export async function getUserByUsername(params) {
} }
export async function checkUserExists(params) { export async function checkUserExists(params) {
return request(`/user/exists`, { return request('/user/exists', {
method: 'POST', method: 'POST',
body: JSON.stringify(params), body: JSON.stringify(params),
}); });
...@@ -58,7 +58,7 @@ export async function checkUserExists(params) { ...@@ -58,7 +58,7 @@ export async function checkUserExists(params) {
export async function getAuthUser(params) { export async function getAuthUser(params) {
return request(`/authUser`, { return request('/authUser', {
method: 'GET', method: 'GET',
headers: { headers: {
Authorization: `Bearer ${params.token}`, Authorization: `Bearer ${params.token}`,
......
import request from '../utils/request'; import request from '../utils/request';
export async function uploadImage(params) { export async function uploadImage(params) {
console.log(params); console.log(params);
let data = new FormData(); const data = new FormData();
data.append('file', params['image']); data.append('file', params.image);
return request('/upload/image', { return request('/upload/image', {
method: 'POST', method: 'POST',
......
...@@ -10,11 +10,11 @@ async function checkStatus(response) { ...@@ -10,11 +10,11 @@ async function checkStatus(response) {
return response; return response;
} }
let message let message;
try { try {
message = (await response.json())["message"] message = (await response.json()).message;
} catch (error) { } catch (error) {
message = response.statusText message = response.statusText;
} }
const error = new Error(message); const error = new Error(message);
...@@ -29,17 +29,19 @@ async function checkStatus(response) { ...@@ -29,17 +29,19 @@ async function checkStatus(response) {
* @param {object} [options] The options we want to pass to "fetch" * @param {object} [options] The options we want to pass to "fetch"
* @return {object} An object containing either "data" or "err" * @return {object} An object containing either "data" or "err"
*/ */
export default function request(url, options) { export default function request(relativeUrl, options) {
url = `${config.apiRoot}${url}` const url = `${config.apiRoot}${relativeUrl}`;
if(options && !options.headers) { if (options && !options.headers) {
options.headers = { Object.assign(options, {
"content-type": "application/json" headers: {
} 'content-type': 'application/json',
},
});
} }
console.log(options) console.log(options);
return fetch(url, options) return fetch(url, options)
.then(checkStatus) .then(checkStatus)
.then(parseJSON) .then(parseJSON)
.then(data => ({ data })) .then(data => ({ data }));
// .catch(err => ({ err })); // .catch(err => ({ err }));
} };
import crypto from 'crypto' import crypto from 'crypto';
import "url-api-polyfill"; import 'url-api-polyfill';
const url = new URL(window.location) let sso;
const ssoString = new URL(window.location).searchParams.get('sso');
let sso
let ssoString = url.searchParams.get('sso')
if (ssoString) { if (ssoString) {
sso = new URLSearchParams(Buffer.from(ssoString, 'base64').toString()) sso = new URLSearchParams(Buffer.from(ssoString, 'base64').toString());
} }
export const handleSSO = (user) => { export const handleSSO = (user) => {
if(sso) { if (sso) {
let params = new URLSearchParams() const params = new URLSearchParams();
let url = new URL(sso.get("return_sso_url")); const url = new URL(sso.get('return_sso_url'));
for (let [key, value] of Object.entries(user)) { for (const [key, value] of Object.entries(user)) {
params.set(key, value) params.set(key, value);
} }
params.set("return_sso_url", sso.get("return_sso_url")) params.set('return_sso_url', sso.get('return_sso_url'));
params.set("nonce", sso.get("nonce")) params.set('nonce', sso.get('nonce'));
params.set("external_id", user.id) params.set('external_id', user.id);
let payload = Buffer.from(params.toString()).toString('base64') const payload = Buffer.from(params.toString()).toString('base64');
url.searchParams.set("sso", payload) url.searchParams.set('sso', payload);
url.searchParams.set('sig', crypto.createHmac('sha256', 'zsZv6LXHDwwtUAGa').update(payload).digest('hex')) url.searchParams.set('sig', crypto.createHmac('sha256', 'zsZv6LXHDwwtUAGa').update(payload).digest('hex'));
window.location.href = url window.location.href = url;
return true return true;
}else { } else {
return false return false;
} }
} };
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment