diff --git a/src/components/profile/Category.jsx b/src/components/profile/Category.jsx
deleted file mode 100644
index cce21a9..0000000
--- a/src/components/profile/Category.jsx
+++ /dev/null
@@ -1,105 +0,0 @@
-import React, { Component } from 'react';
-
-import { FormattedMessage as Message, FormattedRelative as Relative } from 'react-intl';
-
-import styles from './category.scss';
-
-export class Category extends Component {
- static displayName = 'Logout';
-
- render() {
- var { user } = this.props;
- console.log(user);
-
- return (
-
-
- Настройки аккаунта Ely.by
-
-
-
- Благодаря аккаунту Ely.by вы можете получить доступ ко многим ресурсам, связанным с Minecraft.
- Берегите свой аккаунт, используйте надёжный пароль и регулярно его меняйте.
-
-
-
-
-
Персональные данные
-
- Здесь вы можете сменить ключевые параметры вашего аккаунта. Обратите внимание, что для
- всех действий необходимо подтверждение при помощи ввода пароля.
-
-
-
-
-
-
Ник:
-
{user.username}
-
-
-
- Найден аккаунт Mojang с таким же ником и, по правилам проекта, его владелец вправе
- потребовать восстановления контроля над ником.
-
-
-
-
-
-
E-mail:
-
{user.email}
-
-
-
-
-
-
-
Пароль:
-
- Изменён
-
-
-
- {user.shouldChangePassword ? (
-
- Для пароля применяется старый алгоритм хэширования
- Пожалуйста, смените пароль.
-
- ) : ''}
-
-
-
-
-
Двухфакторная аутентификация:
-
Не включена
-
-
-
-
-
-
-
-
- );
- }
-}
diff --git a/src/components/profile/Profile.jsx b/src/components/profile/Profile.jsx
new file mode 100644
index 0000000..44afe0b
--- /dev/null
+++ b/src/components/profile/Profile.jsx
@@ -0,0 +1,83 @@
+import React, { Component } from 'react';
+
+import { FormattedMessage as Message, FormattedRelative as Relative } from 'react-intl';
+import Helmet from 'react-helmet';
+
+import { userShape } from 'components/user/User';
+
+import ProfileField from './ProfileField';
+import styles from './profile.scss';
+
+export class Profile extends Component {
+ static displayName = 'Profile';
+ static propTypes = {
+ user: userShape
+ };
+
+ render() {
+ const { user } = this.props;
+
+ const pageTitle = 'Настройки аккаунта Ely.by';
+
+ return (
+
+
+
+ {pageTitle}
+
+
+
+
+ Благодаря аккаунту Ely.by вы можете получить доступ ко многим ресурсам, связанным с Minecraft.
+ Берегите свой аккаунт, используйте надёжный пароль и регулярно его меняйте.
+
+
+
+
+
+ Персональные данные
+
+
+ Здесь вы можете сменить ключевые параметры вашего аккаунта. Обратите внимание, что для
+ всех действий необходимо подтверждение при помощи ввода пароля.
+
+
+
+
+
+
+
+
Изменён }
+ warningMessage={user.shouldChangePassword ? (
+
+ Для пароля применяется старый алгоритм хэширования
+ Пожалуйста, смените пароль.
+
+ ) : ''}
+ />
+
+
+
+
+
+
+
+ );
+ }
+}
diff --git a/src/components/profile/ProfileField.jsx b/src/components/profile/ProfileField.jsx
new file mode 100644
index 0000000..21dafb8
--- /dev/null
+++ b/src/components/profile/ProfileField.jsx
@@ -0,0 +1,40 @@
+import React, { Component, PropTypes } from 'react';
+
+import styles from './profile.scss';
+
+export default class ProfileField extends Component {
+ static displayName = 'ProfileField';
+ static propTypes = {
+ label: PropTypes.string.isRequired,
+ value: React.PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,
+ warningMessage: React.PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
+ readonly: PropTypes.bool
+ };
+
+ render() {
+ const {label, value, warningMessage, readonly} = this.props;
+
+ return (
+
+
+
{label}:
+
{value}
+
+ {readonly ? '' : (
+
+ )}
+
+
+ {warningMessage ? (
+
+ {warningMessage}
+
+ ) : ''}
+
+ );
+ }
+}
diff --git a/src/components/profile/category.scss b/src/components/profile/profile.scss
similarity index 97%
rename from src/components/profile/category.scss
rename to src/components/profile/profile.scss
index b61fc71..a41b93a 100644
--- a/src/components/profile/category.scss
+++ b/src/components/profile/profile.scss
@@ -1,6 +1,11 @@
@import '~components/ui/fonts.scss';
@import '~components/ui/colors.scss';
+.container {
+ margin-top: 55px;
+}
+
+
.title {
font-family: $font-family-title;
font-size: 30px;
diff --git a/src/pages/index/IndexPage.jsx b/src/pages/index/IndexPage.jsx
index bdf5a46..ca6d1d4 100644
--- a/src/pages/index/IndexPage.jsx
+++ b/src/pages/index/IndexPage.jsx
@@ -2,17 +2,13 @@ import React, { Component } from 'react';
import { connect } from 'react-redux';
-import ProfilePage from 'pages/profile/ProfilePage';
+import { Profile } from 'components/profile/Profile';
class IndexPage extends Component {
displayName = 'IndexPage';
render() {
- return (
-
- );
+ return ();
}
}
diff --git a/src/pages/profile/ProfilePage.jsx b/src/pages/profile/ProfilePage.jsx
deleted file mode 100644
index 1173aa6..0000000
--- a/src/pages/profile/ProfilePage.jsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import React, { Component, PropTypes } from 'react';
-
-import { connect } from 'react-redux';
-
-import { Category } from 'components/profile/Category';
-
-import styles from './profile.scss';
-
-class ProfilePage extends Component {
- static displayName = 'AuthPage';
- static propTypes = {
- /*client: PropTypes.shape({
- id: PropTypes.string.isRequired,
- name: PropTypes.string.isRequired,
- description: PropTypes.string.isRequired
- })*/
- };
-
- state = {
- };
-
- render() {
- return (
-
-
-
- );
- }
-}
-
-export default connect((state) => ({
- //client: state.auth.client
-}))(ProfilePage);
diff --git a/src/pages/profile/profile.scss b/src/pages/profile/profile.scss
deleted file mode 100644
index 56a0366..0000000
--- a/src/pages/profile/profile.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-@import "~components/ui/colors.scss";
-
-.content {
- margin-top: 55px;
-}