]> git.openstreetmap.org Git - rails.git/blob - app/controllers/accounts_controller.rb
Remove legacy OpenID login
[rails.git] / app / controllers / accounts_controller.rb
1 class AccountsController < ApplicationController
2   include SessionMethods
3   include UserMethods
4
5   layout "site"
6
7   before_action :authorize_web
8   before_action :set_locale
9
10   authorize_resource :class => false
11
12   before_action :check_database_readable
13   before_action :check_database_writable, :only => [:update]
14
15   allow_thirdparty_images :only => [:show, :update]
16   allow_social_login :only => [:show, :update]
17
18   def show
19     if errors = session.delete(:user_errors)
20       errors.each do |attribute, error|
21         current_user.errors.add(attribute, error)
22       end
23     end
24     @title = t ".title"
25   end
26
27   def update
28     user_params = params.expect(:user => [:display_name, :new_email, :pass_crypt, :pass_crypt_confirmation, :auth_provider])
29
30     if params[:user][:auth_provider].blank? ||
31        params[:user][:auth_provider] == current_user.auth_provider
32       update_user(current_user, user_params)
33       if current_user.errors.empty?
34         redirect_to account_path
35       else
36         render :show
37       end
38     else
39       session[:new_user_settings] = user_params.to_h
40       redirect_to auth_url(params[:user][:auth_provider]), :status => :temporary_redirect
41     end
42   end
43
44   def destroy
45     if current_user.deletion_allowed?
46       current_user.soft_destroy!
47
48       session.delete(:user)
49       session_expires_automatically
50
51       flash[:notice] = t ".success"
52       redirect_to root_path
53     else
54       head :bad_request
55     end
56   end
57 end