83 lines
2.1 KiB
Ruby
83 lines
2.1 KiB
Ruby
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.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,
|
|
:lastfm_username => user.lastfm_username,
|
|
:lastfm_login_url => 'http://www.last.fm/api/auth?api_key='+ LastFmController.api_key +
|
|
'&cb=http://'+ request.host << '/lastfm/connect/?sid='+ user.session.key
|
|
}
|
|
|
|
render :json => @res
|
|
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.save
|
|
end
|
|
@res[:user] = {
|
|
:id => user.id,
|
|
:name => user.name,
|
|
:email => user.email,
|
|
:vkid => user.vkid,
|
|
:lastfm_username => user.lastfm_username,
|
|
:lastfm_login_url => 'http://www.last.fm/api/auth?api_key='+ LastFmController.api_key +
|
|
'&cb=http://'+ request.host << '/lastfm/connect/?sid='+ user.session.key
|
|
}
|
|
|
|
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
|