app/controllers/user_controller.rb
require "douban_auth"
require "qq_auth"
class UserController < ApplicationController
before_filter :current_user!
include Douban_Auth
include QQAuth
def login
render :layout => false
end
def auth_douban
url = auth_url.to_s
redirect_to url
end
def auth_qq
url = qq_auth_url.to_s
redirect_to url
end
def logout
session[:name] = nil
redirect_to '/'
end
def books
query = params[:query]
@user = User.find_by_id params[:id]
case query
when 'borrowed'
@books = @user.borrowed_and_not_returned_books
when 'private'
@books = @user.private_books
else
@books = @user.open_books
puts "========empty?===="+@books.empty?.to_s
end
@query = query
render :books
end
def return_book
instance = BookInstance.find_by_id params[:instance_id]
if @current_user.borrowed_and_not_returned_books.include? instance
@current_user.return_book instance
@message = 'Return book success.'
redirect_to :back, :alert => @message
return
else
@message = 'Can not find your borrow history.'
end
redirect_to :back, :notice => @message
end
def view
@user = User.find_by_id params[:id]
@total_borrowed_books = @user.borrowed_books
@total_books = @user.book_instances
end
def delete_book
user = User.find_by_id params[:user_id]
if user != @current_user
@message = 'Sorry, you do not have the rights to delete this book'
redirect_to :back, :notice => @message
return
end
instance = BookInstance.find_by_id params[:instance_id]
if instance.current_borrower !=nil
@message = 'This book can"t be delete, because there is still have a borrower'
redirect_to :back, :notice => @message
return
end
if instance != nil && user.book_instances.include?(instance)
@current_user.book_instances.destroy instance
@message = 'delete book success'
redirect_to :back, :alert => @message
end
end
def update
user = User.find_by_id params[:id]
if User.check_email_existed params[:email] && user != @current_user
redirect_to :back, :notice => 'Email address already has been taken,please choose another one.'
return
end
if params[:email] =='' || params[:username] == '' || params[:city] == ''
redirect_to :back, :notice => 'All of the input areas should be filled.'
return
end
@current_user.update_preferred_name params[:username]
@current_user.update_email params[:email]
@current_user.update_location params[:city]
redirect_to :back, :alert => '更新个人信息成功'
end
def edit
@user = @current_user
render :edit
end
end