appoxy_sessions 0.0.16 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
@@ -54,9 +54,11 @@ module Appoxy
54
54
  session[:return_to] = request.request_uri # return to after logging in
55
55
  puts "ac=" + params[:ac].inspect
56
56
  if params[:user_id] && params[:ac]
57
+ # todo: should we store ac in cookie? Make it easier to pass around
58
+ cookies[:ac] = params[:ac]
57
59
  # then from an invite
58
60
  user = ::User.find(params[:user_id])
59
- if user && user.password.blank? # this the best way to decide of user has not logged in? Could also check status.
61
+ if user && user.password.blank? # is this the best way to decide of user has not logged in? Could also check status.
60
62
  redirect_to :controller=>"users", :action=>"new", :email=>user.email, :ac=>params[:ac]
61
63
  return
62
64
  end
@@ -2,6 +2,18 @@ module Appoxy
2
2
  module Sessions
3
3
  module Shareable
4
4
 
5
+ # Call this method on your Sharable object to share it with the person.
6
+ # returns: a hash with :user (the user that the item was shared with), :ac (activation code that should be sent to the user)
7
+ # or false if couldn't be shared.
8
+ # You can check for errors by looking at the errors array of the object.
9
+ # Eg:
10
+ # if my_ob.share_with(x)
11
+ # # all good
12
+ # Mail the user a link that contains user_id and ac, this gem will take care of the rest.
13
+ # else
14
+ # # not all good, check errors
15
+ # errors = my_ob.errors
16
+ # end
5
17
 
6
18
  def share_with(email, access_rights={}, options={})
7
19
 
@@ -9,13 +21,8 @@ module Appoxy
9
21
 
10
22
  @email = email.strip
11
23
 
12
- # See if user exists in the system already
13
- # if @email == current_user.email current_user not available from here
14
- # flash[:error] = "Now why do you want to invite yourself??"
15
- # return false
16
- # end
17
24
  if @email == self.user.email
18
- self.errors.add_to_base("That user already owns this project.")
25
+ self.errors.add_to_base("User already owns this item.")
19
26
  return false
20
27
  end
21
28
 
@@ -23,7 +30,7 @@ module Appoxy
23
30
  if user.nil?
24
31
  # lets create the user and send them an invite.
25
32
  user = ::User.new(:email=>@email, :status=>"invited")
26
- user.set_activation_code
33
+ user.set_activation_code # todo: this shouldn't be on user anymore
27
34
  if user.save
28
35
 
29
36
  else
@@ -31,6 +38,7 @@ module Appoxy
31
38
  return false
32
39
  end
33
40
  end
41
+ activation_code = user.activation_code
34
42
 
35
43
  # check if exists
36
44
  share_domain = self.share_domain
@@ -38,14 +46,13 @@ module Appoxy
38
46
  # puts 'share_domain = ' + share_domain.inspect
39
47
  @sdb = SimpleRecord::Base.connection
40
48
  # @shared_with = share_class.find(:first, :conditions=>["user_id = ? and item_id = ?", user.id, @item.id])
41
- @project_user = get_results(:first, ["select * from #{share_domain} where user_id=? and #{item_id_name} = ?", user.id, self.id])
42
- puts '@project_user=' + @project_user.inspect
49
+ @project_user = Shareable.get_results(:first, ["select * from #{share_domain} where user_id=? and #{item_id_name} = ?", user.id, self.id])
50
+ puts 'sharing user=' + @project_user.inspect
43
51
  unless @project_user.nil?
44
- self.errors.add_to_base("This project is already shared with this user.")
52
+ self.errors.add_to_base("This item is already shared with #{email}.")
45
53
  return false
46
54
  end
47
55
 
48
- # id = self.class.generate_id
49
56
  now = Time.now
50
57
  id = share_id(user)
51
58
  @sdb.put_attributes(share_domain, id, {:new_share=>true,
@@ -53,9 +60,15 @@ module Appoxy
53
60
  :created=>SimpleRecord::Translations.pad_and_offset(now),
54
61
  :updated=>SimpleRecord::Translations.pad_and_offset(now),
55
62
  :user_id => user.id,
56
- item_id_name => self.id }.merge(access_rights), true)
63
+ :activation_code=>activation_code,
64
+ :status=>"invited",
65
+ item_id_name => self.id}.merge(access_rights), true)
57
66
 
58
- return user
67
+ ret = {
68
+ :user=>user,
69
+ :ac=>activation_code
70
+ }
71
+ return ret
59
72
 
60
73
  end
61
74
 
@@ -63,12 +76,13 @@ module Appoxy
63
76
  return self.class.name.foreign_key
64
77
  end
65
78
 
66
- def common_attribrutes
79
+ def common_attributes
67
80
  ["new_share", "id", "created", "updated", "user_id", item_id_name]
68
81
  end
69
82
 
83
+ # Returns a list of users that this item is shared with.
70
84
  def shared_with
71
- project_users = get_results(:all, ["select * from #{share_domain} where #{item_id_name} = ?", self.id])
85
+ project_users = Shareable.get_results(:all, ["select * from #{share_domain} where #{item_id_name} = ?", self.id])
72
86
  user_ids = []
73
87
  options_hash = {}
74
88
  project_users.each do |puhash|
@@ -94,6 +108,7 @@ module Appoxy
94
108
  ret
95
109
  end
96
110
 
111
+ # this unshares by the
97
112
  def unshare_by_id(id)
98
113
  # @project_user = ProjectUser.find(params[:pu_id])
99
114
  # @project_user.delete
@@ -103,15 +118,25 @@ module Appoxy
103
118
  # puts 'deleted?'
104
119
  end
105
120
 
121
+ # Unshare by user.
122
+ def unshare(user)
123
+ @sdb = SimpleRecord::Base.connection
124
+ @sdb.delete_attributes(share_domain, share_id(user))
125
+ # @project_user = Shareable.get_results(:first, ["select * from #{share_domain} where user_id=? and #{item_id_name} = ?", user.id, self.id])
126
+ # @project_user.each do |pu|
127
+ # @sdb.delete_attributes(share_domain, pu["id"])
128
+ # end
129
+ end
130
+
106
131
  def update_sharing_options(user, options={})
107
132
  options={} if options.nil?
108
133
  # puts 'options=' + ({ :updated=>Time.now }.merge(options)).inspect
109
134
  @sdb = SimpleRecord::Base.connection
110
- @project_user = get_results(:first, ["select * from #{share_domain} where user_id=? and #{item_id_name} = ?", user.id, self.id])
135
+ @project_user = Shareable.get_results(:first, ["select * from #{share_domain} where user_id=? and #{item_id_name} = ?", user.id, self.id])
111
136
  # compare values
112
137
  to_delete = []
113
138
  @project_user.each_pair do |k, v|
114
- if !common_attribrutes.include?(k) && !options.include?(k)
139
+ if !common_attributes.include?(k) && !options.include?(k)
115
140
  to_delete << k
116
141
  end
117
142
  end
@@ -119,7 +144,7 @@ module Appoxy
119
144
  puts 'to_delete=' + to_delete.inspect
120
145
  @sdb.delete_attributes(share_domain, share_id(user), to_delete)
121
146
  end
122
- @sdb.put_attributes(share_domain, share_id(user), { :updated=>Time.now }.merge(options), true)
147
+ @sdb.put_attributes(share_domain, share_id(user), {:updated=>Time.now}.merge(options), true)
123
148
 
124
149
  end
125
150
 
@@ -137,7 +162,7 @@ module Appoxy
137
162
  end
138
163
 
139
164
 
140
- def get_results(which, q)
165
+ def self.get_results(which, q)
141
166
  @sdb = SimpleRecord::Base.connection
142
167
  next_token = nil
143
168
  ret = []
@@ -6,10 +6,13 @@ module Appoxy
6
6
 
7
7
  def new
8
8
  before_new
9
- puts 'NEW YO'
10
- @user = User.new
11
- @user.email = params[:email] if params[:email]
12
- @user.activation_code = params[:ac]
9
+ if params[:id]
10
+ @user = User.find params[:id]
11
+ else
12
+ @user = User.new
13
+ @user.email = params[:email] if params[:email]
14
+ end
15
+ @user.activation_code = params[:ac] if params[:ac]
13
16
  after_new
14
17
  end
15
18
 
@@ -42,6 +45,10 @@ module Appoxy
42
45
  existing_user = ::User.find_by_email(@user.email)
43
46
 
44
47
  if existing_user
48
+ if params[:ac]
49
+
50
+ end
51
+ # todo: remove activation_code on user
45
52
  if @user.activation_code.present?
46
53
  # hasn't logged in yet, probably invited, need to check access key
47
54
  if existing_user.activation_code == @user.activation_code
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appoxy_sessions
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 61
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 16
10
- version: 0.0.16
9
+ - 17
10
+ version: 0.0.17
11
11
  platform: ruby
12
12
  authors:
13
13
  - Travis Reeder