-
Notifications
You must be signed in to change notification settings - Fork 1
/
goog-auth-client.rb
32 lines (27 loc) · 1.11 KB
/
goog-auth-client.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Shoes.setup do
gem 'rest-client'
gem 'net-ssh'
end
%w(rest_client openssl.so openssl/bn openssl/cipher openssl/digest openssl/ssl openssl/x509 net/ssh).each { |lib| require lib}
class GoogleAuthClient < Shoes
url '/', :login
url '/list', :list
def login
stack do
title "Please login", :margin => 4
para "Log in using your Google credentials!"
flow :margin_left => 4 do para "Email"; @me = edit_line; end
flow :margin_left => 4 do para "Password"; @password = edit_line :secret => true; end
button "login" do $me = @me.text; authenticate(@me.text,@password.text) ? visit('/list') : alert("Wrong email or password"); end
end
end
def list
title "You are logged in!"
end
def authenticate(email,password)
response = RestClient.post 'https://www.google.com/accounts/ClientLogin', 'accountType' => 'HOSTED_OR_GOOGLE', 'Email' => email, 'Passwd' => password, :service => 'xapi', :source => 'Goog-Auth-1.0'
return true if response.code == 200
return false
end
end
Shoes.app :width => 400, :height => 200, :title => 'Google Authenticator'