1
0
Fork 0
oldhaven/app/controllers/user_controller.rb

93 lines
2.3 KiB
Ruby

class UserController < ApplicationController
before_filter :authorize
def auth
@res = {status: 'hello', newbie: false}
user = User.find_by_vkid(params[:mid])
if user.nil?
user = User.new(vkid: params[:mid], lang: 'ru').save
@res[:newbie] = true
end
session = Session.find_or_create_by_user_id(user.id)
if session.key != session_key
session.key = session_key
session.save
@res[:ok_reload] = true
return render json: @res
end
@res[:user] = build_user_info(user)
render json: @res
end
def settings
@user = User.find_by_vkid(params[:mid])
render partial: 'settings'
end
def update
allowed_params = [:name, :email, :lang, :show, :lastfm_username, :lastfm_key]
user = User.find_by_vkid(params[:mid])
unless params[:params].nil?
update_params = {}
params[:params] = params[:params].each{ |k, v| update_params[k.to_sym] = v }
if (update_params.keys - allowed_params).empty?
if update_params.include? :show
update_params[:show] = update_params[:show].map{ |k, v| k.to_sym }
end
params[:params].each do |k, v|
user[k] = v
end
user.save
end
end
render json: {user: build_user_info(user)}
end
def fav
@res = {status: 'fail'}
fav = Favorite.new
if not params[:artist].nil?
artist = Artist.find(params[:artist]);
unless artist.nil?
fav.artist_id = artist.id
res[:status] = 'added'
end
elsif not params[:album].nil?
album = Album.find(params[:album]);
unless album.nil?
fav.album_id = album.id
res[:status] = 'added'
end
elsif not params[:track].nil?
track = Track.find(params[:track]);
unless track.nil?
fav.track_id = track.id
res[:status] = 'added'
end
end
render json: @res
end
private
def build_user_info user
{
id: user.id,
name: user.name,
email: user.email,
vkid: user.vkid,
lang: user.lang,
lastfm_username: user.lastfm_username,
lastfm_login_url: "http://www.last.fm/api/auth?api_key=#{LastFM.api_key}"+
"&cb=http://#{request.host}:#{request.port.to_s}/lastfm/connect/?sid=#{user.session.key}"
}
end
end