mirror of
				https://github.com/elyby/accounts-frontend.git
				synced 2025-05-31 14:11:58 +05:30 
			
		
		
		
	Добавлена страница вёрстка для страницы смены пароля после процесса аутентификации
This commit is contained in:
		
							
								
								
									
										83
									
								
								src/components/auth/PasswordChange.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								src/components/auth/PasswordChange.jsx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| import React, { PropTypes } from 'react'; | ||||
|  | ||||
| import { FormattedMessage as Message } from 'react-intl'; | ||||
| import Helmet from 'react-helmet'; | ||||
|  | ||||
| import buttons from 'components/ui/buttons.scss'; | ||||
| import { Input } from 'components/ui/Form'; | ||||
|  | ||||
| import BaseAuthBody from './BaseAuthBody'; | ||||
| import passwordChangedMessages from './PasswordChange.messages'; | ||||
|  | ||||
| import icons from 'components/ui/icons.scss'; | ||||
| import styles from './passwordChange.scss'; | ||||
|  | ||||
| class Body extends BaseAuthBody { | ||||
|     static propTypes = { | ||||
|         ...BaseAuthBody.propTypes/*, | ||||
|         // Я так полагаю, это правила валидации? | ||||
|         login: PropTypes.func.isRequired, | ||||
|         auth: PropTypes.shape({ | ||||
|             error: PropTypes.string, | ||||
|             login: PropTypes.shape({ | ||||
|                 login: PropTypes.stirng | ||||
|             }) | ||||
|         })*/ | ||||
|     }; | ||||
|  | ||||
|     render() { | ||||
|         return ( | ||||
|             <div> | ||||
|                 {this.renderErrors()} | ||||
|  | ||||
|                 <div className={styles.security}> | ||||
|                     <span className={icons.lock} /> | ||||
|                 </div> | ||||
|  | ||||
|                 <p className={styles.descriptionText}> | ||||
|                     <Message {...passwordChangedMessages.changePasswordMessage} /> | ||||
|                 </p> | ||||
|  | ||||
|                 <Input {...this.bindField('newPassword')} | ||||
|                     icon="key" | ||||
|                     color="darkBlue" | ||||
|                     autoFocus | ||||
|                     required | ||||
|                     placeholder={passwordChangedMessages.newPassword} | ||||
|                 /> | ||||
|  | ||||
|                 <Input {...this.bindField('newRePassword')} | ||||
|                     icon="key" | ||||
|                     color="darkBlue" | ||||
|                     required | ||||
|                     placeholder={passwordChangedMessages.newRePassword} | ||||
|                 /> | ||||
|             </div> | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     onFormSubmit() { | ||||
|         this.props.login(this.serialize()); | ||||
|     } | ||||
| } | ||||
|  | ||||
| export default function PasswordChange() { | ||||
|     return { | ||||
|         Title: () => ( // TODO: separate component for PageTitle | ||||
|             <Message {...passwordChangedMessages.changePasswordTitle}> | ||||
|                 {(msg) => <span>{msg}<Helmet title={msg} /></span>} | ||||
|             </Message> | ||||
|         ), | ||||
|         Body, | ||||
|         Footer: () => ( | ||||
|             <button className={buttons.darkBlue} type="submit"> | ||||
|                 <Message {...passwordChangedMessages.change} /> | ||||
|             </button> | ||||
|         ), | ||||
|         Links: () => ( | ||||
|             <a href="/oauth/permissions"> | ||||
|                 <Message {...passwordChangedMessages.skipThisStep} /> | ||||
|             </a> | ||||
|         ) | ||||
|     }; | ||||
| } | ||||
							
								
								
									
										28
									
								
								src/components/auth/PasswordChange.messages.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/components/auth/PasswordChange.messages.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| import { defineMessages } from 'react-intl'; | ||||
|  | ||||
| export default defineMessages({ | ||||
|     changePasswordTitle: { | ||||
|         id: 'changePasswordTitle', | ||||
|         defaultMessage: 'Change password' | ||||
|     }, | ||||
|     changePasswordMessage: { | ||||
|         id: 'passwordChangeMessage', | ||||
|         defaultMessage: 'To enhance the security of your account, please change your password.' | ||||
|     }, | ||||
|     skipThisStep: { | ||||
|         id: 'skipThisStep', | ||||
|         defaultMessage: 'Skip password changing' | ||||
|     }, | ||||
|     change: { | ||||
|         id: 'change', | ||||
|         defaultMessage: 'Change' | ||||
|     }, | ||||
|     newPassword: { | ||||
|         id: 'newPassword', | ||||
|         defaultMessage: 'Enter new password' | ||||
|     }, | ||||
|     newRePassword: { | ||||
|         id: 'newRePassword', | ||||
|         defaultMessage: 'Repeat new password' | ||||
|     } | ||||
| }); | ||||
							
								
								
									
										16
									
								
								src/components/auth/passwordChange.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/components/auth/passwordChange.scss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| @import '~components/ui/colors.scss'; | ||||
|  | ||||
| .descriptionText { | ||||
|     font-size: 15px; | ||||
|     line-height: 1.4; | ||||
|     padding-bottom: 8px; | ||||
|     color: #aaa; | ||||
| } | ||||
|  | ||||
| // TODO: вынести иконки такого типа в какую-то внешнюю структуру? | ||||
| .security { | ||||
|     color: #fff; | ||||
|     font-size: 90px; | ||||
|     line-height: 1; | ||||
|     margin-bottom: 15px; | ||||
| } | ||||
| @@ -59,3 +59,4 @@ | ||||
| @include button-theme('blue', $blue); | ||||
| @include button-theme('green', $green); | ||||
| @include button-theme('orange', $orange); | ||||
| @include button-theme('darkBlue', $dark_blue); | ||||
|   | ||||
| @@ -102,6 +102,7 @@ | ||||
| @include input-theme('green', $green); | ||||
| @include input-theme('blue', $blue); | ||||
| @include input-theme('red', $red); | ||||
| @include input-theme('darkBlue', $dark_blue); | ||||
|  | ||||
|  | ||||
| /** | ||||
|   | ||||
							
								
								
									
										10
									
								
								src/icons/webfont/lock.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/icons/webfont/lock.svg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| <?xml version="1.0" standalone="no"?> | ||||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||||
| <svg id="Untitled-%u0421%u0442%u0440%u0430%u043D%u0438%u0446%u0430%201" viewBox="0 0 32 32" style="background-color:#ffffff00" version="1.1" | ||||
| 	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" | ||||
| 	x="0px" y="0px" width="32px" height="32px" | ||||
| > | ||||
| 	<g id="%u0421%u043B%u043E%u0439%201"> | ||||
| 		<path id="locked" d="M 24.9997 31.9998 L 6.9997 31.9998 C 5.3428 31.9998 3.9997 30.6566 3.9997 28.9998 L 3.9997 17.9998 C 3.9997 16.343 5.3428 14.9998 6.9997 14.9998 L 7.9996 14.9998 L 7.9996 6.9999 C 7.9996 3.1338 11.5814 -0.0002 15.9996 -0.0002 C 20.418 -0.0002 23.9996 3.1338 23.9996 6.9999 L 23.9996 14.9998 L 24.9997 14.9998 C 26.6566 14.9998 27.9997 16.343 27.9997 17.9998 L 27.9997 28.9998 C 27.9997 30.6566 26.6566 31.9998 24.9997 31.9998 ZM 19.9996 6.9999 C 19.9996 5.343 18.2089 3.9999 15.9996 3.9999 C 13.7906 3.9999 11.9996 5.343 11.9996 6.9999 L 11.9996 13.9998 C 11.9996 14.351 12.0843 14.6866 12.2321 14.9998 L 19.7672 14.9998 C 19.915 14.6866 19.9996 14.351 19.9996 13.9998 L 19.9996 6.9999 ZM 15.9996 17.9998 C 13.7906 17.9998 11.9996 19.7907 11.9996 21.9998 C 11.9996 23.4795 12.8052 24.7684 13.9997 25.4604 L 13.9997 26.9998 C 13.9997 28.1044 14.8951 28.9998 15.9996 28.9998 C 17.1044 28.9998 17.9998 28.1044 17.9998 26.9998 L 17.9998 25.4603 C 19.1942 24.7683 19.9996 23.4794 19.9996 21.9998 C 19.9996 19.7907 18.2089 17.9998 15.9996 17.9998 Z" fill="#000000"/> | ||||
| 	</g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 1.5 KiB | 
| @@ -7,7 +7,7 @@ | ||||
|     <meta name="msapplication-tap-highlight" content="no"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"> | ||||
|  | ||||
|     <link href='http://fonts.googleapis.com/css?family=Roboto+Condensed&subset=latin,cyrillic' rel='stylesheet' type='text/css'> | ||||
|     <link href='https://fonts.googleapis.com/css?family=Roboto+Condensed&subset=latin,cyrillic' rel='stylesheet' type='text/css'> | ||||
| </head> | ||||
| <body> | ||||
|  | ||||
|   | ||||
| @@ -11,6 +11,7 @@ import Permissions from 'components/auth/Permissions'; | ||||
| import Activation from 'components/auth/Activation'; | ||||
| import Password from 'components/auth/Password'; | ||||
| import Logout from 'components/auth/Logout'; | ||||
| import PasswordChange from 'components/auth/PasswordChange'; | ||||
|  | ||||
| export default function routesFactory(store) { | ||||
|     function checkAuth(nextState, replace) { | ||||
| @@ -47,6 +48,7 @@ export default function routesFactory(store) { | ||||
|                 <Route path="/activation" components={new Activation()} /> | ||||
|                 <Route path="/oauth/permissions" components={new Permissions()} onEnter={checkAuth} /> | ||||
|                 <Route path="/oauth/:id" component={Permissions} /> | ||||
|                 <Route path="/password-change" components={new PasswordChange()} /> | ||||
|             </Route> | ||||
|  | ||||
|             <Route path="logout" component={Logout} /> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user