From eef2b7e233d49bfa26e5a7a6406e4719d14e68aa Mon Sep 17 00:00:00 2001 From: Matt Lively Date: Fri, 28 Oct 2016 21:22:17 -0700 Subject: [PATCH 1/2] ml/cjl: adding reset password feature --- .../nova-base-components/lib/components.js | 3 ++- .../lib/users/UsersResetPassword.jsx | 20 +++++++++++++++++++ packages/nova-base-routes/lib/routes.jsx | 13 ++++++------ packages/nova-users/lib/server.js | 1 + packages/nova-users/lib/server/urls.js | 1 + 5 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 packages/nova-base-components/lib/users/UsersResetPassword.jsx create mode 100644 packages/nova-users/lib/server/urls.js diff --git a/packages/nova-base-components/lib/components.js b/packages/nova-base-components/lib/components.js index f4291e9c5..684aaf5bb 100644 --- a/packages/nova-base-components/lib/components.js +++ b/packages/nova-base-components/lib/components.js @@ -75,4 +75,5 @@ Telescope.registerComponent("UsersAvatar", require('./users/UsersAvatar Telescope.registerComponent("UsersName", require('./users/UsersName.jsx')); Telescope.registerComponent("UsersMenu", require('./users/UsersMenu.jsx')); Telescope.registerComponent("UsersAccountMenu", require('./users/UsersAccountMenu.jsx')); -Telescope.registerComponent("UsersAccountForm", require('./users/UsersAccountForm.jsx')); \ No newline at end of file +Telescope.registerComponent("UsersAccountForm", require('./users/UsersAccountForm.jsx')); +Telescope.registerComponent("UsersResetPassword", require('./users/UsersResetPassword.jsx')); diff --git a/packages/nova-base-components/lib/users/UsersResetPassword.jsx b/packages/nova-base-components/lib/users/UsersResetPassword.jsx new file mode 100644 index 000000000..9a6e7f0e7 --- /dev/null +++ b/packages/nova-base-components/lib/users/UsersResetPassword.jsx @@ -0,0 +1,20 @@ +import React, { Component } from 'react'; +import { Accounts, STATES } from 'meteor/std:accounts-ui'; + +class UsersResetPassword extends Component { + componentDidMount() { + const token = this.props.params.token; + Accounts._loginButtonsSession.set('resetPasswordToken', token); + } + + render() { + return ( + + ); + } +} + +module.exports = UsersResetPassword; +export default UsersResetPassword; diff --git a/packages/nova-base-routes/lib/routes.jsx b/packages/nova-base-routes/lib/routes.jsx index 322a52f32..753c8cda2 100644 --- a/packages/nova-base-routes/lib/routes.jsx +++ b/packages/nova-base-routes/lib/routes.jsx @@ -17,12 +17,13 @@ Telescope.routes.indexRoute = { name: "posts.list", component: Telescope.compone Meteor.startup(() => { Telescope.routes.add([ - {name:"posts.daily", path:"daily", component:Telescope.components.PostsDaily}, - {name:"posts.single", path:"posts/:_id(/:slug)", component:Telescope.components.PostsSingle}, - {name:"users.single", path:"users/:slug", component:Telescope.components.UsersSingle}, - {name:"users.account", path:"account", component:Telescope.components.UsersAccount}, - {name:"users.edit", path:"users/:slug/edit", component:Telescope.components.UsersAccount}, - {name:"app.notfound", path:"*", component:Telescope.components.Error404}, + {name:"posts.daily", path:"daily", component:Telescope.components.PostsDaily}, + {name:"posts.single", path:"posts/:_id(/:slug)", component:Telescope.components.PostsSingle}, + {name:"users.single", path:"users/:slug", component:Telescope.components.UsersSingle}, + {name:"users.account", path:"account", component:Telescope.components.UsersAccount}, + {name:"resetPassword", path:"reset-password/:token", component:Telescope.components.UsersResetPassword}, + {name:"users.edit", path:"users/:slug/edit", component:Telescope.components.UsersAccount}, + {name:"app.notfound", path:"*", component:Telescope.components.Error404}, ]); const AppRoutes = { diff --git a/packages/nova-users/lib/server.js b/packages/nova-users/lib/server.js index d133929c5..0fa5a5ce8 100644 --- a/packages/nova-users/lib/server.js +++ b/packages/nova-users/lib/server.js @@ -2,5 +2,6 @@ import Users from './modules.js'; import './server/create_user.js'; import './server/publications.js'; +import './server/urls.js'; export default Users; \ No newline at end of file diff --git a/packages/nova-users/lib/server/urls.js b/packages/nova-users/lib/server/urls.js new file mode 100644 index 000000000..d86b0be94 --- /dev/null +++ b/packages/nova-users/lib/server/urls.js @@ -0,0 +1 @@ +Accounts.urls.resetPassword = (token) => Meteor.absoluteUrl(`reset-password/${token}`); From 4f6b7d78fda97ba0118717b4b7ea913d0f5513e9 Mon Sep 17 00:00:00 2001 From: Matt Lively Date: Tue, 1 Nov 2016 19:38:06 -0700 Subject: [PATCH 2/2] ml/cjl: adding support for users logged in. --- .../lib/users/UsersResetPassword.jsx | 22 ++++++++++++++++--- .../lib/stylesheets/_accounts.scss | 4 ++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/nova-base-components/lib/users/UsersResetPassword.jsx b/packages/nova-base-components/lib/users/UsersResetPassword.jsx index 9a6e7f0e7..c36eb596d 100644 --- a/packages/nova-base-components/lib/users/UsersResetPassword.jsx +++ b/packages/nova-base-components/lib/users/UsersResetPassword.jsx @@ -1,5 +1,6 @@ import React, { Component } from 'react'; import { Accounts, STATES } from 'meteor/std:accounts-ui'; +import { Link } from 'react-router'; class UsersResetPassword extends Component { componentDidMount() { @@ -8,13 +9,28 @@ class UsersResetPassword extends Component { } render() { + if (!this.context.currentUser) { + return ( + + ); + } + return ( - +
+
{T9n.get('info.passwordChanged')}!
+ + Return Home + +
); } } module.exports = UsersResetPassword; export default UsersResetPassword; + +UsersResetPassword.contextTypes = { + currentUser: React.PropTypes.object +}; diff --git a/packages/nova-base-styles/lib/stylesheets/_accounts.scss b/packages/nova-base-styles/lib/stylesheets/_accounts.scss index 423ca6ddd..57dd7d23f 100644 --- a/packages/nova-base-styles/lib/stylesheets/_accounts.scss +++ b/packages/nova-base-styles/lib/stylesheets/_accounts.scss @@ -29,4 +29,8 @@ } } } +} + +.password-reset-form{ + text-align: center; } \ No newline at end of file