Zatial nie je doriesene enkryptovanie hesiel v databaze.
| ... | ... |
@@ -22,17 +22,17 @@ class ApplicationController < ActionController::Base |
| 22 | 22 |
@token = Token.authenticate(session) |
| 23 | 23 |
end |
| 24 | 24 |
|
| 25 |
- def create_new_authentication(jid = nil) |
|
| 25 |
+ def create_new_authentication(user_credentials = nil) |
|
| 26 | 26 |
if @token |
| 27 | 27 |
user_id = @token.user_id |
| 28 | 28 |
@token.delete |
| 29 | 29 |
else |
| 30 |
- user_id = jid.nil? ? nil : create_new_user(jid) |
|
| 30 |
+ user_id = !user_credentials ? nil : create_new_user(user_credentials) |
|
| 31 | 31 |
end |
| 32 | 32 |
|
| 33 | 33 |
@token = Token.new |
| 34 | 34 |
|
| 35 |
- save_session(user_id) |
|
| 35 |
+ save_session(user_id) if not user_id |
|
| 36 | 36 |
end |
| 37 | 37 |
|
| 38 | 38 |
def save_session(user_id) |
| ... | ... |
@@ -43,8 +43,13 @@ class ApplicationController < ActionController::Base |
| 43 | 43 |
@token.save_session(session, user_id) |
| 44 | 44 |
end |
| 45 | 45 |
|
| 46 |
- def create_new_user(jid) |
|
| 47 |
- user = User.new(jid: jid) |
|
| 48 |
- user.id if user.save |
|
| 46 |
+ def create_new_user(user_credentials) |
|
| 47 |
+ jid = user_credentials[:jid] |
|
| 48 |
+ pass = user_credentials[:password] |
|
| 49 |
+ |
|
| 50 |
+ user = User.existing_jid(jid) || User.create_jid(jid) |
|
| 51 |
+ user.update_pass(jid, pass) |
|
| 52 |
+ |
|
| 53 |
+ user.id |
|
| 49 | 54 |
end |
| 50 | 55 |
end |
| ... | ... |
@@ -13,7 +13,11 @@ class SessionsController < ApplicationController |
| 13 | 13 |
return render 'new' |
| 14 | 14 |
end |
| 15 | 15 |
|
| 16 |
- create_new_authentication(params[:jid].downcase) |
|
| 16 |
+ create_new_authentication({
|
|
| 17 |
+ jid: params[:jid].downcase, |
|
| 18 |
+ password: params[:password] |
|
| 19 |
+ }) |
|
| 20 |
+ |
|
| 17 | 21 |
redirect_to chat_path, flash: {notice: I18n.t('login.success')}
|
| 18 | 22 |
end |
| 19 | 23 |
|
| ... | ... |
@@ -1,6 +1,29 @@ |
| 1 | 1 |
class User |
| 2 | 2 |
include Mongoid::Document |
| 3 | 3 |
|
| 4 |
- field :id, type: Moped::BSON::ObjectId |
|
| 5 |
- field :jid, type: String |
|
| 4 |
+ field :jids, type: Array |
|
| 5 |
+ |
|
| 6 |
+ def update_pass(jid, pass) |
|
| 7 |
+ account_credentials = jids.detect do |f| |
|
| 8 |
+ f[:jid] == jid || f["jid"] == jid |
|
| 9 |
+ end |
|
| 10 |
+ |
|
| 11 |
+ account_credentials[:pass] = pass |
|
| 12 |
+ save |
|
| 13 |
+ end |
|
| 14 |
+ |
|
| 15 |
+ def self.existing_jid(jid) |
|
| 16 |
+ where("jids.jid" => jid).only(:jids).first
|
|
| 17 |
+ end |
|
| 18 |
+ |
|
| 19 |
+ def self.create_jid(jid) |
|
| 20 |
+ new_user = new(jids: [ {jid: jid} ])
|
|
| 21 |
+ new_user.save |
|
| 22 |
+ new_user |
|
| 23 |
+ end |
|
| 24 |
+ |
|
| 25 |
+ def add_account(another_jid, password) |
|
| 26 |
+ jids << {jid: another_jid, pass: password}
|
|
| 27 |
+ save |
|
| 28 |
+ end |
|
| 6 | 29 |
end |
| 7 | 30 |
\ No newline at end of file |