مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-11-30 21:32:30 +00:00
78 أسطر
2.5 KiB
Ruby
78 أسطر
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class UserController < ApplicationController
|
|
|
|
skip_before_action :login_required, only: [:new, :create, :join]
|
|
|
|
def new
|
|
@user_invite = UserInvite.active.find_by!(uuid: params[:invite_token])
|
|
@user = User.new
|
|
@user.email_address = @user_invite.email_address
|
|
render layout: "sub"
|
|
end
|
|
|
|
def edit
|
|
@user = User.find(current_user.id)
|
|
end
|
|
|
|
def create
|
|
@user_invite = UserInvite.active.find_by!(uuid: params[:invite_token])
|
|
@user = User.new(params.require(:user).permit(:first_name, :last_name, :email_address, :password, :password_confirmation))
|
|
@user.email_verified_at = Time.now
|
|
if @user.save
|
|
@user_invite.accept(@user)
|
|
self.current_user = @user
|
|
redirect_to root_path
|
|
else
|
|
render "new", layout: "sub"
|
|
end
|
|
end
|
|
|
|
def join
|
|
if @invite = UserInvite.where(uuid: params[:token]).where("expires_at > ?", Time.now).first
|
|
if logged_in?
|
|
if request.post?
|
|
@invite.accept(current_user)
|
|
redirect_to_with_json root_path(nrd: 1), notice: "Invitation has been accepted successfully. You now have access to this organization."
|
|
elsif request.delete?
|
|
@invite.reject
|
|
redirect_to_with_json root_path(nrd: 1), notice: "Invitation has been rejected successfully."
|
|
else
|
|
@organizations = @invite.organizations.order(:name).to_a
|
|
end
|
|
else
|
|
redirect_to new_signup_path(params[:token])
|
|
end
|
|
else
|
|
redirect_to_with_json root_path(nrd: 1), alert: "The invite URL you have has expired. Please ask the person who invited you to re-send your invitation."
|
|
end
|
|
end
|
|
|
|
def update
|
|
@user = User.find(current_user.id)
|
|
@user.attributes = params.require(:user).permit(:first_name, :last_name, :time_zone, :email_address, :password, :password_confirmation)
|
|
|
|
if @user.authenticate_with_previous_password_first(params[:password])
|
|
@password_correct = true
|
|
else
|
|
respond_to do |wants|
|
|
wants.html do
|
|
flash.now[:alert] = "The current password you have entered is incorrect. Please check and try again."
|
|
render "edit"
|
|
end
|
|
wants.json do
|
|
render json: { alert: "The current password you've entered is incorrect. Please check and try again" }
|
|
end
|
|
end
|
|
return
|
|
end
|
|
|
|
if @user.save
|
|
redirect_to_with_json settings_path, notice: "Your settings have been updated successfully."
|
|
else
|
|
render_form_errors "edit", @user
|
|
end
|
|
end
|
|
|
|
end
|