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

Merge remote-tracking branch 'origin/master'

parents 8e8fb944 0373d4e2
......@@ -2,15 +2,19 @@
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
trim_trailing_whitespace = true
end_of_line = lf
[*.md]
max_line_length = 0
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
# Indentation override
#[lib/**.js]
#[{package.json,.travis.yml}]
#[**/**.js]
......@@ -23,11 +23,16 @@
"no-bitwise": [0],
"no-cond-assign": [0],
"import/no-unresolved": [0],
"require-yield": [1]
"require-yield": [1],
"react/react-in-jsx-scope": [0],
"no-extra-semi": [0]
},
"parserOptions": {
"ecmaFeatures": {
"experimentalObjectRestSpread": true
}
},
"env": {
"browser": true
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<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$/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/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>
<ignored path="$PROJECT_DIR$/.tmp/" />
<ignored path="$PROJECT_DIR$/temp/" />
......@@ -21,12 +26,12 @@
<window id="1">
<content type="file-editors">
<state>
<leaf>
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="i18n.json" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/i18n.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="267">
<caret line="103" column="13" lean-forward="true" selection-start-line="103" selection-start-column="5" selection-end-line="103" selection-end-column="13" />
<state relative-caret-position="122">
<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 />
</state>
</provider>
......@@ -40,88 +45,127 @@
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="auth.js" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/models/auth.js">
<file leaf-file-name="Index.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/Index.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" />
<state relative-caret-position="115">
<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#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>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="auth.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/services/auth.js">
<file leaf-file-name="index.html" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/public/index.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="418">
<caret line="22" column="0" lean-forward="true" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
<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 />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="upload.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/services/upload.js">
<file leaf-file-name=".travis.yml" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/.travis.yml">
<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 relative-caret-position="182">
<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 />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="common.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/common.js">
<file leaf-file-name="user.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/user.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 relative-caret-position="198">
<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 />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="user.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/user.js">
<file leaf-file-name="Activate.js" pinned="false" current-in-tab="false">
<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">
<state relative-caret-position="3876">
<caret line="208" column="24" lean-forward="false" selection-start-line="208" selection-start-column="24" selection-end-line="208" selection-end-column="24" />
<state relative-caret-position="172">
<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>
</file>
<file leaf-file-name="Index.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/Index.js">
<file leaf-file-name="Register.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/Register.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="625">
<caret line="158" column="11" lean-forward="true" selection-start-line="158" selection-start-column="11" selection-end-line="158" selection-end-column="11" />
<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>
<element signature="e#0#36#0" expanded="true" />
<marker date="1491468814760" expanded="true" signature="3782:3786" ph="{&quot;messages&quot;: messages...}" />
<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>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Login.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/Login.js">
<file leaf-file-name="Reset.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/Reset.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" />
<state relative-caret-position="33">
<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 />
</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">
<file leaf-file-name="Verify.js" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/routes/Verify.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
<state relative-caret-position="123">
<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>
<element signature="e#0#61#0" expanded="true" />
<element signature="e#0#66#0" expanded="true" />
</folding>
</state>
</provider>
......@@ -181,26 +225,28 @@
<option value="$PROJECT_DIR$/src/components/SubmitButton.js" />
<option value="$PROJECT_DIR$/src/components/UserNameForm.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/user.js" />
<option value="$PROJECT_DIR$/src/index.js" />
<option value="$PROJECT_DIR$/src/router.js" />
<option value="$PROJECT_DIR$/src/components/PasswordForm.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/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$/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/routes/Index.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>
</option>
</component>
......@@ -222,10 +268,9 @@
<handled-path value="$PROJECT_DIR$/node_modules" />
</component>
<component name="ProjectFrameBounds">
<option name="x" value="-8" />
<option name="y" value="-8" />
<option name="width" value="1936" />
<option name="height" value="1176" />
<option name="y" value="23" />
<option name="width" value="1440" />
<option name="height" value="815" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
......@@ -242,27 +287,25 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<PATH>
<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="myItemId" value="moecube-accounts-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="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="myItemId" value="moecube-accounts-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
......@@ -272,29 +315,11 @@
</PATH>
<PATH>
<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_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="services" />
<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" />
</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>
......@@ -308,11 +333,11 @@
</PATH>
<PATH>
<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="myItemId" value="moecube-accounts-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
......@@ -324,26 +349,10 @@
<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" />
</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>
</pane>
<pane id="Scope" />
<pane id="Scratches" />
</panes>
</component>
<component name="PropertiesComponent">
......@@ -357,6 +366,127 @@
<property name="node.js.path.for.package.standard" value="project" />
<property name="node.js.selected.package.standard" value="" />
</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">
<option name="ruleStates">
<list>
......@@ -370,23 +500,33 @@
</option>
</component>
<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">
<package-json value="$PROJECT_DIR$/package.json" />
<command value="run" />
<scripts>
<script value="start" />
</scripts>
<node-interpreter value="project" />
<node-interpreter value="/usr/local/Cellar/node/7.7.4/bin/node" />
<envs />
<method />
</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" />
<command value="run" />
<scripts>
<script value="lint" />
<script value="build" />
</scripts>
<node-interpreter value="project" />
<node-interpreter value="/usr/local/Cellar/node/7.7.4/bin/node" />
<envs />
<method />
</configuration>
......@@ -456,14 +596,16 @@
<recursive>false</recursive>
<method />
</configuration>
<list size="2">
<item index="0" class="java.lang.String" itemvalue="npm.start" />
<item index="1" class="java.lang.String" itemvalue="npm.lint" />
<list size="3">
<item index="0" 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>
<recent_temporary>
<list size="2">
<list size="3">
<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>
</recent_temporary>
</component>
......@@ -591,11 +733,32 @@
<option name="project" value="LOCAL" />
<updated>1491467859850</updated>
</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 />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="89421000" />
<option name="totallyTimeSpent" value="91792000" />
</component>
<component name="TodoView" selected-index="3">
<todo-panel id="selected-file">
......@@ -607,25 +770,36 @@
</todo-panel>
</component>
<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>
<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="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="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="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.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="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="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="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="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="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="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="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="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-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" />
......@@ -662,7 +836,9 @@
<MESSAGE value="i18n" />
<MESSAGE value="error.messages" />
<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 name="XDebuggerManager">
<breakpoint-manager>
......@@ -673,7 +849,6 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="javascript">
<url>file://$PROJECT_DIR$/src/router.js</url>
<properties />
<option name="timeStamp" value="3" />
</line-breakpoint>
</breakpoints>
......@@ -682,35 +857,6 @@
<watches-manager />
</component>
<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">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="38">
......@@ -771,26 +917,21 @@
</entry>
<entry file="file://$PROJECT_DIR$/.editorconfig">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="171">
<caret line="9" column="20" lean-forward="false" selection-start-line="9" selection-start-column="20" selection-end-line="9" selection-end-column="20" />
<state relative-caret-position="210">
<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>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.eslintrc">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="418">
<caret line="22" column="22" lean-forward="true" selection-start-line="22" selection-start-column="22" selection-end-line="22" selection-end-column="22" />
<state relative-caret-position="242">
<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>
</provider>
</entry>
<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.js" />
<entry file="file://$PROJECT_DIR$/src/models/example.js" />
......@@ -799,7 +940,6 @@
<provider selected="true" editor-type-id="text-editor">
<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" />
<folding />
</state>
</provider>
</entry>
......@@ -807,7 +947,6 @@
<provider selected="true" editor-type-id="text-editor">
<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" />
<folding />
</state>
</provider>
</entry>
......@@ -823,37 +962,6 @@
<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" />
<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>
</provider>
</entry>
......@@ -861,17 +969,6 @@
<provider selected="true" editor-type-id="text-editor">
<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" />
<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>
</provider>
</entry>
......@@ -879,11 +976,7 @@
<provider selected="true" editor-type-id="text-editor">
<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" />
<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>
<folding />
</state>
</provider>
</entry>
......@@ -901,7 +994,6 @@
<provider selected="true" editor-type-id="text-editor">
<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" />
<folding />
</state>
</provider>
</entry>
......@@ -929,7 +1021,6 @@
<provider selected="true" editor-type-id="text-editor">
<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" />
<folding />
</state>
</provider>
</entry>
......@@ -947,128 +1038,206 @@
<provider selected="true" editor-type-id="text-editor">
<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" />
</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>
<element signature="e#0#31#0" expanded="false" />
</folding>
</state>
</provider>
</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">
<state relative-caret-position="304">
<caret line="16" column="40" lean-forward="false" selection-start-line="16" selection-start-column="38" selection-end-line="16" selection-end-column="40" />
<state relative-caret-position="267">
<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>
<element signature="e#0#62#0" expanded="true" />
<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...}" />
<element signature="e#0#30#0" expanded="false" />
</folding>
</state>
</provider>
</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">
<state relative-caret-position="267">
<caret line="103" column="13" lean-forward="true" selection-start-line="103" selection-start-column="5" selection-end-line="103" selection-end-column="13" />
<state relative-caret-position="120">
<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 />
</state>
</provider>
</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">
<state relative-caret-position="570">
<caret line="30" column="1" lean-forward="false" selection-start-line="30" selection-start-column="1" selection-end-line="30" selection-end-column="1" />
<state relative-caret-position="225">
<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>
<element signature="e#0#30#0" expanded="false" />
<element signature="e#0#31#0" expanded="true" />
</folding>
</state>
</provider>
</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">
<state relative-caret-position="171">
<caret line="9" column="6" lean-forward="false" selection-start-line="9" selection-start-column="6" selection-end-line="9" selection-end-column="6" />
<state relative-caret-position="115">
<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 />
</state>
</provider>
</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">
<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 relative-caret-position="122">
<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 />
</state>
</provider>
</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">
<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 relative-caret-position="182">
<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 />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/user.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3876">
<caret line="208" column="24" lean-forward="false" selection-start-line="208" selection-start-column="24" selection-end-line="208" selection-end-column="24" />
<state relative-caret-position="198">
<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 />
</state>
</provider>
</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">
<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 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>
<entry file="file://$PROJECT_DIR$/src/routes/Profiles.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
<state relative-caret-position="172">
<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>
<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>
</state>
</provider>
</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">
<state relative-caret-position="625">
<caret line="158" column="11" lean-forward="true" selection-start-line="158" selection-start-column="11" selection-end-line="158" selection-end-column="11" />
<state relative-caret-position="33">
<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#36#0" expanded="true" />
<marker date="1491468814760" expanded="true" signature="3782:3786" ph="{&quot;messages&quot;: messages...}" />
<element signature="e#0#55#0" expanded="true" />
</folding>
</state>
</provider>
</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">
<state relative-caret-position="418">
<caret line="22" column="0" lean-forward="true" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
<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 />
</state>
</provider>
</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">
<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" />
<state relative-caret-position="123">
<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>
<element signature="e#0#31#0" expanded="true" />
<element signature="e#0#66#0" expanded="true" />
</folding>
</state>
</provider>
......
let publicPath = 'https://cdn01.moecube.com/accounts/'
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 {
......
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 @@
"i_not_found":"用户不存在",
"i_key_time_out":"此链接已过期",
"i_key_invalid":"此链接已失效",
"没毛用":"防逗号报错,上线删"
}
......
{
"private": true,
"scripts": {
"start": "cross-env BUILD=development roadhog server",
"build:dev": "cross-env BUILD=development roadhog build",
"build": "roadhog build",
"start": "cross-env API_ROOT=http://192.168.1.9:3000 roadhog server",
"build:dev": "cross-env API_ROOT=http://114.215.243.95:8082 roadhog build",
"build": "cross-env API_ROOT=https://api.moeube.com/accounts roadhog build",
"lint": "eslint --ext .js src test",
"precommit": "npm run lint"
},
......
......@@ -3,7 +3,8 @@
<head>
<meta charset="UTF-8">
<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>
<body>
......
......@@ -18,7 +18,9 @@ class EmailForm extends React.Component {
onSubmit = (e) => {
const { form, dispatch, user: { id } } = this.props;
e && e.preventDefault();
if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => {
if (!err) {
console.log('Received values of form: ', values);
......
......@@ -18,6 +18,24 @@ class EmailForm extends React.Component {
static contextTypes = {
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) => {
const form = this.props.form;
const { intl: { messages } } = this.context;
......@@ -36,20 +54,6 @@ class EmailForm extends React.Component {
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() {
const { form } = this.props;
......@@ -131,7 +135,7 @@ class EmailForm extends React.Component {
}
function mapStateToProps(state, props) {
function mapStateToProps(state) {
const {
user: { user },
} = state;
......
......@@ -18,7 +18,9 @@ class EmailForm extends React.Component {
onSubmit = (e) => {
const { form, dispatch, user: { id } } = this.props;
e && e.preventDefault();
if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => {
if (!err) {
console.log('Received values of form: ', values);
......@@ -59,7 +61,8 @@ class EmailForm extends React.Component {
{getFieldDecorator('email', { ...emailProps.decorator })(
<Input
{...emailProps.input}
onBlur={() => dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue(), id } })}/>,
onBlur={() => dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue(), id } })}
/>,
)}
</FormItem>
......
......@@ -18,7 +18,9 @@ class EmailForm extends React.Component {
onSubmit = (e) => {
const { form, dispatch, user: { id } } = this.props;
e && e.preventDefault();
if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => {
if (!err) {
console.log('Received values of form: ', values);
......
/* global apiRoot */
export default {
apiRoot: apiRoot
apiRoot,
};
......@@ -11,7 +11,7 @@ import './index.less';
// 1. Initialize
const app = dva({
onError: (error, dispatch) => {
onError: (error) => {
message.destroy();
message.error(error.message);
},
......
html, body, :global(#root) {
height: 100%;
min-height: 100%;
}
:global {
......
......@@ -22,8 +22,9 @@ export default {
},
reducers: {
signOut(state) {
console.log('sign out');
localStorage.removeItem('token');
location='/';
location.href = '/';
return state;
},
change(state, action) {
......
......@@ -144,7 +144,7 @@ export default {
if (data.active) {
yield put(routerRedux.replace('/profiles'));
} else {
yield put(routerRedux.replace('/verify'));
yield put(routerRedux.replace('/signin'));
}
}
} catch (error) {
......@@ -204,11 +204,19 @@ export default {
const token = localStorage.getItem('token');
if (token) {
dispatch({ type: 'getAuthUser', payload: { token } });
} else if (location.pathname === '/profiles') {
dispatch(routerRedux.replace('/signin'));
}
history.listen(({ pathname }) => {
history.listen(({ pathname, query }) => {
if (pathname === '/') {
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 Active from './routes/Activate.js';
......
......@@ -14,7 +14,7 @@ class Active extends React.Component {
render() {
const { loading } = this.props;
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}>
<Format id={'verify-email'}/>
</Button>
......
......@@ -14,9 +14,11 @@ class Login extends React.Component {
};
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) => {
if (!err) {
console.log('Received values of form: ', values);
......@@ -33,7 +35,7 @@ class Login extends React.Component {
const { loading } = this.props;
const { intl: { messages } } = this.context;
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}>
<Form onSubmit={this.onSubmitLogin} className="login-form">
......@@ -46,7 +48,10 @@ class Login extends React.Component {
{getFieldDecorator('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>
......
......@@ -139,12 +139,12 @@ function Index({ children, messages, dispatch }) {
</Menu>
);
return (
<div style={{ height: '100%'}}>
<DocumentTitle title={messages.title || 'Moe Cube'} />
<div style={{ display: 'flex', flexDirection: 'column', flex: 1, minHeight: '100%' }}>
<DocumentTitle title={messages.title || 'Moe Cube'}/>
<Header style={{ display: 'flex', alignItems: 'center' }}>
<Link to="/" style={{ marginTop: '20px' }}>
<img src={logo} style={{ width: '140px', height: '44px' }}/>
<img alt="logo" src={logo} style={{ width: '140px', height: '44px' }}/>
</Link>
<Menu
......@@ -167,7 +167,11 @@ function Index({ children, messages, dispatch }) {
style={{ lineHeight: '64px', position: 'absolute', right: '50px' }}
>
{localStorage.getItem('token') ? (<Menu.Item key="1">
<div onClick={() => { dispatch({ type : 'auth/signOut' }) }}>
<div
onClick={() => {
dispatch({ type: 'auth/signOut' });
}}
>
<Format id="sign-out"/>
</div>
</Menu.Item>) : ('')
......@@ -196,7 +200,7 @@ function Index({ children, messages, dispatch }) {
/>
{children}
<Footer style={{ position: 'absolute', width: '100%'}}>
<Footer style={{ width: '100%' }}>
<div>© MoeCube 2017 all right reserved.</div>
</Footer>
</div>
......
......@@ -35,7 +35,7 @@ class Login extends React.Component {
const { intl: { messages } } = this.context;
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}>
<Form onSubmit={this.onSubmitLogin} className="login-form">
......@@ -43,14 +43,20 @@ class Login extends React.Component {
{getFieldDecorator('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>
{getFieldDecorator('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>
......
......@@ -19,11 +19,11 @@ const formItemLayout = {
wrapperCol: { span: 15 },
};
function getBase64(img, callback) {
const reader = new FileReader();
reader.addEventListener('load', () => callback(reader.result));
reader.readAsDataURL(img);
}
// function getBase64(img, callback) {
// const reader = new FileReader();
// reader.addEventListener('load', () => callback(reader.result));
// reader.readAsDataURL(img);
// }
class Profiles extends React.Component {
......@@ -31,15 +31,20 @@ class Profiles extends React.Component {
intl: PropTypes.object.isRequired,
};
handleUpload = () => {
if (typeof this.cropper.getCroppedCanvas() === 'undefined') {
return;
onUpdateSubmit = (e) => {
const { form, dispatch, user: { id } } = this.props;
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 => {
console.log(blob);
this.props.dispatch({ type: 'upload/upload', payload: { image: blob, user_id: id } });
const { username, name, password } = values;
dispatch({ type: 'user/updateProfile', payload: { username, name, password, user_id: id } });
}
});
};
......@@ -57,18 +62,15 @@ class Profiles extends React.Component {
reader.readAsDataURL(files[0]);
};
onUpdateSubmit = (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 { username, name, password } = values;
dispatch({ type: 'user/updateProfile', payload: { username, name, password, user_id: id } });
handleUpload = () => {
if (typeof this.cropper.getCroppedCanvas() === 'undefined') {
return;
}
const { user: { id } } = this.props;
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 {
},
};
/* eslint-disable jsx-a11y/label-has-for */
return (
<Spin spinning={loading} delay={100}>
<Tabs defaultActiveKey="1" className="app-detail-nav">
......@@ -99,37 +101,34 @@ class Profiles extends React.Component {
<Form onSubmit={this.onUpdateSubmit}>
<FormItem style={{ display: 'flex', justifyContent: 'center' }}>
{
isUpload ?
<div>
<div style={{ display: isUpload ? 'flex' : 'none', flexDirection: 'column' }}>
<Cropper
ref={cropper => {
ref={(cropper) => {
this.cropper = cropper;
}}
src={ imageUrl || defaultAvatar}
src={imageUrl || defaultAvatar}
style={{ height: '20vw', width: '20vw' }}
aspectRatio={1 / 1}
guides={true}
guides
/>
<Button>
<label >
<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 {...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 { Link } from 'dva/router';
import React, { PropTypes } from 'react';
import { FormattedMessage as Format } from 'react-intl';
const FormItem = Form.Item;
const Option = Select.Option;
const Step = Steps.Step;
......@@ -16,14 +15,16 @@ class Register extends React.Component {
};
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) => {
if (!err) {
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 } });
}
......@@ -49,35 +50,38 @@ class Register extends React.Component {
};
render() {
const { dispatch, register, form, checkEmail, checkUsername, isEmailExists, isUserNameExists, isRegisterSubmit, loading } = this.props;
const { getFieldDecorator, } = form;
const { email, username, password } = register;
const {
dispatch, form, checkEmail, checkUsername,
isEmailExists, isUserNameExists, loading,
} = this.props;
const { getFieldDecorator } = form;
const { intl: { messages } } = this.context;
const emailProps = {
hasFeedback: true,
validateStatus: checkEmail,
help: isEmailExists ? messages['i_email_exists'] : '',
extra: isEmailExists ? messages.i_email_exists : '',
};
const emailInputProps = {
onBlur: () => dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue() } }),
onBlur: () => !form.getFieldError('email') && dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue() } }),
placeholder: messages.email,
};
const usernameProps = {
hasFeedback: true,
validateStatus: checkUsername,
help: isUserNameExists ? 'username exists' : '',
extra: isUserNameExists ? 'username exists' : '',
};
const usernameInputProps = {
onBlur: () => dispatch({ type: 'auth/checkUsername', payload: { ...form.getFieldsValue() } }),
onBlur: () => !form.getFieldError('username') && dispatch({ type: 'auth/checkUsername', payload: { ...form.getFieldsValue() } }),
placeholder: messages.username,
};
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}>
<Steps size="large" current={0}>
......@@ -123,7 +127,8 @@ class Register extends React.Component {
<Input
prefix={<Icon type="lock" style={{ fontSize: 13 }}/>}
type="password"
placeholder={messages.password}/>,
placeholder={messages.password}
/>,
)}
</FormItem>
......@@ -141,7 +146,8 @@ class Register extends React.Component {
prefix={<Icon type="lock" style={{ fontSize: 13 }}/>}
type="password"
onBlur={this.handleConfirmBlur}
placeholder={messages['password-again']}/>,
placeholder={messages['password-again']}
/>,
)}
</FormItem>
......@@ -163,7 +169,10 @@ class Register extends React.Component {
function mapStateToProps(state) {
const {
auth: { register, checkEmail, checkUsername, isEmailExists, isUserNameExists, isRegisterSubmit },
auth: {
register, checkEmail, checkUsername, isEmailExists,
isUserNameExists, isRegisterSubmit,
},
} = state;
const loading = state.loading.global || false;
......
......@@ -20,7 +20,6 @@
}
}
.action {
margin-top: 24px;
}
import { Button, Form, Icon, Input, Select, Spin } from 'antd';
import { Button, Form, Icon, Input, Spin } from 'antd';
import { connect } from 'dva';
import React, { PropTypes } from 'react';
import { FormattedMessage as Format } from 'react-intl';
const FormItem = Form.Item;
const Option = Select.Option;
class Reset extends React.Component {
......@@ -16,7 +14,9 @@ class Reset extends React.Component {
onSubmitReset = (e) => {
const { form, dispatch, location: { query: { key, user_id } } } = this.props;
e && e.preventDefault();
if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => {
if (!err) {
console.log('Received values of form: ', values);
......@@ -51,11 +51,11 @@ class Reset extends React.Component {
const { intl: { messages } } = this.context;
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}>
<Form onSubmit={this.onSubmitReset} className="login-form">
<FormItem>
<h1><Format id='reset-password2'/></h1>
<h1><Format id="reset-password2"/></h1>
</FormItem>
<FormItem>
{getFieldDecorator('password', {
......@@ -63,8 +63,10 @@ class Reset extends React.Component {
}, {
validator: this.checkConfirm,
})(
<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>
......@@ -81,7 +83,7 @@ class Reset extends React.Component {
</FormItem>
<Button type="primary" htmlType="submit" className="login-form-button">
<Format id='reset-password2'/>
<Format id="reset-password2"/>
</Button>
</Form>
</Spin>
......@@ -90,7 +92,7 @@ class Reset extends React.Component {
}
}
function mapStateToProps(state, props) {
function mapStateToProps(state) {
const {
auth: { isResetSubmit },
} = state;
......
......@@ -4,6 +4,7 @@ import { routerRedux } from 'dva/router';
import React, { PropTypes } from 'react';
import { FormattedMessage as Format } from 'react-intl';
import SubmitButton from '../components/SubmitButton';
const FormItem = Form.Item;
const Step = Steps.Step;
......@@ -20,7 +21,9 @@ class Verify extends React.Component {
onSubmit = (e) => {
const { form, dispatch, input: { password }, user: { id } } = this.props;
e && e.preventDefault();
if (e) {
e.preventDefault();
}
form.validateFieldsAndScroll((err, values) => {
if (!err) {
console.log('Received values of form: ', values);
......@@ -35,12 +38,14 @@ class Verify extends React.Component {
onReSend = (e) => {
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 } });
};
render(select) {
render() {
const { form, dispatch, user, checkEmail, isEmailExists, loading, input } = this.props;
const { getFieldDecorator } = form;
const { id, email } = user;
......@@ -64,7 +69,8 @@ class Verify extends React.Component {
return (
<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}>
<Steps size="large" current={1}>
......@@ -72,7 +78,7 @@ class Verify extends React.Component {
<Step title={messages['verify-email']} icon={<Icon type="mail"/>}/>
</Steps>
{id && input['password'] ?
{id && input.password ?
<Alert
style={{ marginTop: '24px' }}
message={
......@@ -93,8 +99,9 @@ class Verify extends React.Component {
message={
<div>
<span style={{ marginRight: '10px' }}><Format id={'Please-sign-in'}/></span>
<Tag color="blue" onClick={ () => dispatch(routerRedux.replace('/signin'))}><Format
id={'sign-in'}/></Tag>
<Tag color="blue" onClick={() => dispatch(routerRedux.replace('/signin'))}><Format
id={'sign-in'}
/></Tag>
</div>
}
type="warning"
......@@ -109,7 +116,8 @@ class Verify extends React.Component {
{getFieldDecorator('email', { ...emailProps.decorator })(
<Input
{...emailProps.input}
onBlur={() => dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue(), id } })}/>,
onBlur={() => dispatch({ type: 'auth/checkEmail', payload: { ...form.getFieldsValue(), id } })}
/>,
)}
</FormItem>
......@@ -125,7 +133,7 @@ class Verify extends React.Component {
}
}
function mapStateToProps(state, props) {
function mapStateToProps(state) {
const {
user: { user },
auth: { input, isEmailExists, checkEmail },
......
import request from '../utils/request';
export async function login(params) {
return request(`/signin`, {
return request('/signin', {
method: 'POST',
body: JSON.stringify(params),
});
}
export async function forgot(params) {
return request(`/forgot`, {
return request('/forgot', {
method: 'POST',
body: JSON.stringify(params),
});
}
export async function register(params) {
return request(`/signup`, {
return request('/signup', {
method: 'POST',
body: JSON.stringify(params),
});
}
export async function reset(params) {
return request(`/reset`, {
return request('/reset', {
method: 'PATCH',
body: JSON.stringify(params),
});
}
export async function activate(params) {
return request(`/activate`, {
return request('/activate', {
method: 'POST',
body: JSON.stringify(params),
});
......@@ -50,7 +50,7 @@ export async function getUserByUsername(params) {
}
export async function checkUserExists(params) {
return request(`/user/exists`, {
return request('/user/exists', {
method: 'POST',
body: JSON.stringify(params),
});
......@@ -58,7 +58,7 @@ export async function checkUserExists(params) {
export async function getAuthUser(params) {
return request(`/authUser`, {
return request('/authUser', {
method: 'GET',
headers: {
Authorization: `Bearer ${params.token}`,
......
import request from '../utils/request';
export async function uploadImage(params) {
console.log(params);
let data = new FormData();
data.append('file', params['image']);
const data = new FormData();
data.append('file', params.image);
return request('/upload/image', {
method: 'POST',
......
......@@ -10,11 +10,11 @@ async function checkStatus(response) {
return response;
}
let message
let message;
try {
message = (await response.json())["message"]
message = (await response.json()).message;
} catch (error) {
message = response.statusText
message = response.statusText;
}
const error = new Error(message);
......@@ -29,17 +29,19 @@ async function checkStatus(response) {
* @param {object} [options] The options we want to pass to "fetch"
* @return {object} An object containing either "data" or "err"
*/
export default function request(url, options) {
url = `${config.apiRoot}${url}`
if(options && !options.headers) {
options.headers = {
"content-type": "application/json"
export default function request(relativeUrl, options) {
const url = `${config.apiRoot}${relativeUrl}`;
if (options && !options.headers) {
Object.assign(options, {
headers: {
'content-type': 'application/json',
},
});
}
}
console.log(options)
console.log(options);
return fetch(url, options)
.then(checkStatus)
.then(parseJSON)
.then(data => ({ data }))
.then(data => ({ data }));
// .catch(err => ({ err }));
}
};
import crypto from 'crypto'
import "url-api-polyfill";
import crypto from 'crypto';
import 'url-api-polyfill';
const url = new URL(window.location)
let sso
let ssoString = url.searchParams.get('sso')
let sso;
const ssoString = new URL(window.location).searchParams.get('sso');
if (ssoString) {
sso = new URLSearchParams(Buffer.from(ssoString, 'base64').toString())
sso = new URLSearchParams(Buffer.from(ssoString, 'base64').toString());
}
export const handleSSO = (user) => {
if(sso) {
let params = new URLSearchParams()
let url = new URL(sso.get("return_sso_url"));
if (sso) {
const params = new URLSearchParams();
const url = new URL(sso.get('return_sso_url'));
for (let [key, value] of Object.entries(user)) {
params.set(key, value)
for (const [key, value] of Object.entries(user)) {
params.set(key, value);
}
params.set("return_sso_url", sso.get("return_sso_url"))
params.set("nonce", sso.get("nonce"))
params.set("external_id", user.id)
let payload = Buffer.from(params.toString()).toString('base64')
url.searchParams.set("sso", payload)
url.searchParams.set('sig', crypto.createHmac('sha256', 'zsZv6LXHDwwtUAGa').update(payload).digest('hex'))
window.location.href = url
return true
}else {
return false
params.set('return_sso_url', sso.get('return_sso_url'));
params.set('nonce', sso.get('nonce'));
params.set('external_id', user.id);
const payload = Buffer.from(params.toString()).toString('base64');
url.searchParams.set('sso', payload);
url.searchParams.set('sig', crypto.createHmac('sha256', 'zsZv6LXHDwwtUAGa').update(payload).digest('hex'));
window.location.href = url;
return true;
} else {
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