Class: Spacialdb::Auth
- Inherits:
-
Object
show all
- Extended by:
- Helpers
- Defined in:
- lib/spacialdb/auth.rb
Defined Under Namespace
Classes: PasswordMismatch
Class Attribute Summary collapse
Class Method Summary
collapse
Methods included from Helpers
ask, confirm_command, display, echo_off, echo_on, error, home_directory, json_decode, json_encode, longest, redisplay
Class Attribute Details
.credentials ⇒ Object
Returns the value of attribute credentials.
8
9
10
|
# File 'lib/spacialdb/auth.rb', line 8
def credentials
@credentials
end
|
Class Method Details
.ask_for_and_save_credentials ⇒ Object
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
# File 'lib/spacialdb/auth.rb', line 150
def ask_for_and_save_credentials
begin
@credentials = ask_for_credentials
write_credentials
rescue ::RestClient::Unauthorized, ::RestClient::ResourceNotFound => e
delete_credentials
clear
display "Authentication failed."
exit 1
rescue Exception => e
delete_credentials
raise e
end
end
|
.ask_for_credentials ⇒ Object
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/spacialdb/auth.rb', line 103
def ask_for_credentials
puts "Enter your Spacialdb credentials."
print "Email or Username: "
login = ask
print "Password: "
password = ask_for_password
auth = Spacialdb::Client.auth(login, password, host)
private_api_key = auth['private_api_key']
email = auth['email']
[email, private_api_key]
end
|
.ask_for_password ⇒ Object
119
120
121
122
123
124
125
|
# File 'lib/spacialdb/auth.rb', line 119
def ask_for_password
echo_off
password = ask
puts
echo_on
return password
end
|
.clear ⇒ Object
42
43
44
45
|
# File 'lib/spacialdb/auth.rb', line 42
def clear
@credentials = nil
@client = nil
end
|
.client ⇒ Object
18
19
20
21
22
23
|
# File 'lib/spacialdb/auth.rb', line 18
def client
@client ||= begin
client = Spacialdb::Client.new(email, private_api_key, host)
client
end
end
|
.credentials_file ⇒ Object
71
72
73
74
75
76
77
|
# File 'lib/spacialdb/auth.rb', line 71
def credentials_file
if host == default_host
"#{home_directory}/.spacialdb/credentials"
else
"#{home_directory}/.spacialdb/credentials.#{host}"
end
end
|
.default_host ⇒ Object
10
11
12
|
# File 'lib/spacialdb/auth.rb', line 10
def default_host
"beta.spacialdb.com"
end
|
.delete_credentials ⇒ Object
178
179
180
181
|
# File 'lib/spacialdb/auth.rb', line 178
def delete_credentials
FileUtils.rm_f(credentials_file)
clear
end
|
.email ⇒ Object
47
48
49
50
|
# File 'lib/spacialdb/auth.rb', line 47
def email
get_credentials
@credentials[0]
end
|
.get_credentials ⇒ Object
57
58
59
60
61
62
63
|
# File 'lib/spacialdb/auth.rb', line 57
def get_credentials
return if @credentials
unless @credentials = read_credentials
ask_for_and_save_credentials
end
@credentials
end
|
.host ⇒ Object
14
15
16
|
# File 'lib/spacialdb/auth.rb', line 14
def host
ENV['SPACIALDB_HOST'] || default_host
end
|
.login ⇒ Object
31
32
33
34
35
|
# File 'lib/spacialdb/auth.rb', line 31
def login
delete_credentials
get_credentials
display "Logged in successfully."
end
|
.logout ⇒ Object
37
38
39
40
|
# File 'lib/spacialdb/auth.rb', line 37
def logout
delete_credentials
display "Logged out successfully."
end
|
.private_api_key ⇒ Object
52
53
54
55
|
# File 'lib/spacialdb/auth.rb', line 52
def private_api_key
get_credentials
@credentials[1]
end
|
.read_credentials ⇒ Object
65
66
67
|
# File 'lib/spacialdb/auth.rb', line 65
def read_credentials
File.exists?(credentials_file) and File.read(credentials_file).split("\n")
end
|
.set_credentials_permissions ⇒ Object
173
174
175
176
|
# File 'lib/spacialdb/auth.rb', line 173
def set_credentials_permissions
FileUtils.chmod 0700, File.dirname(credentials_file)
FileUtils.chmod 0600, credentials_file
end
|
.signup ⇒ Object
25
26
27
28
29
|
# File 'lib/spacialdb/auth.rb', line 25
def signup
delete_credentials
signup_and_save_credentials
display "Signed up successfully."
end
|
.signup_and_save_credentials ⇒ Object
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
# File 'lib/spacialdb/auth.rb', line 127
def signup_and_save_credentials
begin
@credentials = signup_for_credientials
write_credentials
rescue ::RestClient::Unauthorized, ::RestClient::Forbidden => e
clear
display "Sign up failed:"
display e.response
exit 1
rescue PasswordMismatch => e
clear
display "Sign up failed:"
display e.message
exit 1
rescue Exception => e
delete_credentials
clear
display "Sign up failed:"
display e.message
raise e
end
end
|
.signup_for_credientials ⇒ Object
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
# File 'lib/spacialdb/auth.rb', line 79
def signup_for_credientials
puts "Sign up to Spacialdb."
print "Email: "
email = ask
print "Username: "
username = ask
print "Password: "
password = ask_for_password
print "Password confirmation: "
password_confirmation = ask_for_password
raise PasswordMismatch, "Password doesn't match confirmation." if password != password_confirmation
signup = Spacialdb::Client.signup(username, email, password, password_confirmation, host)
private_api_key = signup['private_api_key']
email = signup['email']
[email, private_api_key]
end
|
.write_credentials ⇒ Object
165
166
167
168
169
170
171
|
# File 'lib/spacialdb/auth.rb', line 165
def write_credentials
FileUtils.mkdir_p(File.dirname(credentials_file))
f = File.open(credentials_file, 'w')
f.puts self.credentials
f.close
set_credentials_permissions
end
|