summaryrefslogtreecommitdiffstats
path: root/application/service
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2018-05-18 23:02:59 +0200
committerFlorian Pritz <bluewind@xinu.at>2018-05-18 23:02:59 +0200
commit9f8486c87cd81cdb888b8e518f0d3eb50b6abbb9 (patch)
treed12253783735e71a45c3055c463e40ca9a768251 /application/service
parentdd9351c023f57c011cf72bb113c9003ae5aeb2c5 (diff)
Extract invitation key creation to \service\user
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'application/service')
-rw-r--r--application/service/user.php26
1 files changed, 26 insertions, 0 deletions
diff --git a/application/service/user.php b/application/service/user.php
index 1d922a102..bb0c44599 100644
--- a/application/service/user.php
+++ b/application/service/user.php
@@ -77,4 +77,30 @@ class user {
"apikeys" => $ret,
);
}
+
+ static public function create_invitation_key($userid) {
+ $CI =& get_instance();
+
+ $invitations = $CI->db->select('user')
+ ->from('actions')
+ ->where('user', $userid)
+ ->where('action', 'invitation')
+ ->count_all_results();
+
+ if ($invitations + 1 > $CI->config->item('max_invitation_keys')) {
+ throw new \exceptions\PublicApiException("user/invitation-limit", "You can't create more invitation keys at this time.");
+ }
+
+ $key = random_alphanum(12, 16);
+
+ $CI->db->set(array(
+ 'key' => $key,
+ 'user' => $userid,
+ 'date' => time(),
+ 'action' => 'invitation'
+ ))
+ ->insert('actions');
+
+ return $key;
+ }
}