diff --git a/app/controllers/pseudo_members_controller.rb b/app/controllers/pseudo_members_controller.rb index 68c37b3..f18d2c6 100644 --- a/app/controllers/pseudo_members_controller.rb +++ b/app/controllers/pseudo_members_controller.rb @@ -57,6 +57,40 @@ class PseudoMembersController < PseudoSessionController } end + def forgot + {} + end + + def resetsuccess + {} + end + + def forgot_pseudo_user + puser = PseudoUser.where(:email => params[:email]).first + page_url = "/" + I18n.locale.to_s + Page.where(:module => "pseudo_member").first.url + if !puser.nil? + puser.generate_reset_token("http://#{request.host_with_port}#{page_url}?method=confirm_reset_email") + redirect_to page_url + "?method=resetsuccess" + else + redirect_to page_url + "?method=resetfail" + end + end + + def confirm_reset_email + puser = PseudoUser.where(:reset_token => OrbitHelper.params[:reset_token]).first + { + "puser" => puser + } + end + + def update_pseudo_user + puser = PseudoUser.find(params[:puser_id]) + page_url = "/" + I18n.locale.to_s + Page.where(:module => "pseudo_member").first.url + puser.update_password(params[:pseudo_user][:password],params[:pseudo_user][:password_confirmation]) + redirect_to page_url + "?method=resetsuccessful" + + end + # def login # if !current_pseudo_user.nil? # redirect_to member_dash_path(current_pseudo_user.account) diff --git a/app/models/pseudo_user.rb b/app/models/pseudo_user.rb index 8131022..ce7d993 100644 --- a/app/models/pseudo_user.rb +++ b/app/models/pseudo_user.rb @@ -35,6 +35,22 @@ class PseudoUser email.deliver end + def generate_reset_token(url) + self.reset_token = SecureRandom.hex(5) + self.save + # PseudoMemberMailer.send_user_confirmation(self).deliver + email = Email.new + email.mail_to = self.email + email.mail_subject = "Click to reset your password." + email.template = "admin/pseudo_members/reset_password.html.erb" + email.template_data = { + "name" => self.name, + "url" => "#{url}&reset_token=#{self.reset_token}" + } + email.deliver + end + + def is_confirmed? self.confirmation_token.nil? end @@ -43,10 +59,10 @@ class PseudoUser self.first_name + " " + self.last_name rescue self.email end - def generate_reset_token - self.reset_token = SecureRandom.hex(5) - self.save - end + # def generate_reset_token + # self.reset_token = SecureRandom.hex(5) + # self.save + # end def self.check_password_token(reset_token = nil) user = self.find_by(reset_token: reset_token) rescue nil diff --git a/app/views/admin/pseudo_members/reset_password.html.erb b/app/views/admin/pseudo_members/reset_password.html.erb new file mode 100644 index 0000000..fb28141 --- /dev/null +++ b/app/views/admin/pseudo_members/reset_password.html.erb @@ -0,0 +1,7 @@ +

Hello, <%= @data["name"] %>

+

+ Please click on the link below to confirm your email address. +

+

+ ">Confirm Email +

\ No newline at end of file diff --git a/app/views/pseudo_members/confirm_reset_email.html.erb b/app/views/pseudo_members/confirm_reset_email.html.erb new file mode 100644 index 0000000..b725f6c --- /dev/null +++ b/app/views/pseudo_members/confirm_reset_email.html.erb @@ -0,0 +1,24 @@ +<% data = action_data %> +<%= form_for data["puser"], :url => update_pseudo_user_path, html: {class: "form-horizontal"} do |f|%> +

Confirm Password

+
+ +
+ <%= f.password_field :password %> +
+
+ +
+ +
+ <%= f.password_field :password_confirmation %> +
+
+ +
+
+ " name="puser_id" /> + +
+
+<% end %> diff --git a/app/views/pseudo_members/forgot.html.erb b/app/views/pseudo_members/forgot.html.erb new file mode 100644 index 0000000..fbb1988 --- /dev/null +++ b/app/views/pseudo_members/forgot.html.erb @@ -0,0 +1,14 @@ +
+

Forgot Password

+
+ +
+ +
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/app/views/pseudo_members/index.html.erb b/app/views/pseudo_members/index.html.erb index 48886ec..7f7c549 100644 --- a/app/views/pseudo_members/index.html.erb +++ b/app/views/pseudo_members/index.html.erb @@ -29,4 +29,9 @@ " class="register-btn btn btn-info">Register +
+
+ ">Forgot Password? +
+
diff --git a/app/views/pseudo_members/resetfail.html.erb b/app/views/pseudo_members/resetfail.html.erb new file mode 100644 index 0000000..73d608b --- /dev/null +++ b/app/views/pseudo_members/resetfail.html.erb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/views/pseudo_members/resetsuccess.html.erb b/app/views/pseudo_members/resetsuccess.html.erb new file mode 100644 index 0000000..16cb383 --- /dev/null +++ b/app/views/pseudo_members/resetsuccess.html.erb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/views/pseudo_members/resetsuccessful.html.erb b/app/views/pseudo_members/resetsuccessful.html.erb new file mode 100644 index 0000000..094b954 --- /dev/null +++ b/app/views/pseudo_members/resetsuccessful.html.erb @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 5a1a9f3..46af4d6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -16,6 +16,8 @@ Rails.application.routes.draw do post "/loginpseudouser", to: "pseudo_members#loginuser" get "/logoutpseudouser", to: "pseudo_members#logoutuser", as: "member_logout" post "/register_pseudo_user", to: "pseudo_members#register_user", as: "register_pseudo_user" + post "/forgot_pseudo_user", to: "pseudo_members#forgot_pseudo_user", as: "forgot_pseudo_user" + patch "/update_pseudo_user", to: "pseudo_members#update_pseudo_user", as: "update_pseudo_user" end end end