class UserController < ApplicationController def auth return unless authorized? @res = {:status => 'hello', :newbie => false} user = User.find_by_vkid(params[:mid]) if user.nil? user = User.new user.vkid = params[:mid] user.lang = 'ru' user.save @res[:newbie] = true end session = Session.find_or_create_by_user_id(user.id) session.key = Digest::SHA256.hexdigest(rand(99999999).to_s + user.id.to_s + rand(99999999).to_s) session.save @res[:user] = { :id => user.id, :name => user.name, :email => user.email, :vkid => user.vkid, :lang => user.lang, :lastfm_username => user.lastfm_username } unless user.lastfm_username @res[:lastfm_login_url] = 'http://www.last.fm/api/auth?api_key='+ LastFmController.api_key + '&cb=http://'+ request.host << '/lastfm/connect/?sid='+ user.session.key end render :json => @res end def settings return unless authorized? @user = User.find_by_vkid(params[:mid]) render :partial => 'settings' end def update return unless authorized? @res = {} user = User.find_by_vkid(params[:mid]) unless params[:username].nil? or params[:email].nil? user.name = params[:username] user.email = params[:email] user.lang = params[:lang] if ['ru', 'en'].include? params[:lang] user.save end @res[:user] = { :id => user.id, :name => user.name, :email => user.email, :vkid => user.vkid, :lang => user.lang, :lastfm_username => user.lastfm_username } unless user.lastfm_username @res[:lastfm_login_url] = 'http://www.last.fm/api/auth?api_key='+ LastFmController.api_key + '&cb=http://'+ request.host << '/lastfm/connect/?sid='+ user.session.key end render :json => @res end def fav return unless authorized? @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 end