]> git.ipfire.org Git - ipfire.org.git/commitdiff
Capture country code at registration of an account
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 23 Oct 2019 16:07:00 +0000 (17:07 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 23 Oct 2019 16:07:00 +0000 (17:07 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/backend/accounts.py
src/web/auth.py

index 2bb87c76cdcc77ea90c81bedd74bbb9376c05cec..9d72b1cbfe4babb8aa68f54590aea245dec41ffa 100644 (file)
@@ -186,7 +186,7 @@ class Accounts(Object):
 
        # Registration
 
-       def register(self, uid, email, first_name, last_name):
+       def register(self, uid, email, first_name, last_name, country_code=None):
                # Convert all uids to lowercase
                uid = uid.lower()
 
@@ -200,8 +200,8 @@ class Accounts(Object):
                # Create an entry in our database until the user
                # has activated the account
                self.db.execute("INSERT INTO account_activations(uid, activation_code, \
-                       email, first_name, last_name) VALUES(%s, %s, %s, %s, %s)",
-                       uid, activation_code, email, first_name, last_name)
+                       email, first_name, last_name, country_code) VALUES(%s, %s, %s, %s, %s, %s)",
+                       uid, activation_code, email, first_name, last_name, country_code)
 
                # Send an account activation email
                self.backend.messages.send_template("auth/messages/register",
@@ -220,7 +220,8 @@ class Accounts(Object):
 
                # Create a new account on the LDAP database
                account = self.create(uid, res.email,
-                       first_name=res.first_name, last_name=res.last_name)
+                       first_name=res.first_name, last_name=res.last_name,
+                       country_code=res.country_code)
 
                # Send email about account registration
                self.backend.messages.send_template("people/messages/new-account",
@@ -228,7 +229,7 @@ class Accounts(Object):
 
                return account
 
-       def create(self, uid, email, first_name, last_name):
+       def create(self, uid, email, first_name, last_name, country_code=None):
                cn = "%s %s" % (first_name, last_name)
 
                # Account Parameters
@@ -251,8 +252,15 @@ class Accounts(Object):
                self.accounts._authenticate()
                self.ldap.add_s(dn, ldap.modlist.addModlist(account))
 
+               # Fetch the account
+               account = self.get_by_dn(dn)
+
+               # Optionally set country code
+               if country_code:
+                       account.country_code = country_code
+
                # Return account
-               return self.get_by_dn(dn)
+               return account
 
        # Session stuff
 
index b969a6710ed1b725f7f83ee428aba1b792c2bb09..256c4ee84c8eb435bea4034bb8ba366f4c190567 100644 (file)
@@ -105,7 +105,8 @@ class RegisterHandler(base.BaseHandler):
                try:
                        with self.db.transaction():
                                self.backend.accounts.register(uid, email,
-                                       first_name=first_name, last_name=last_name)
+                                       first_name=first_name, last_name=last_name,
+                                       country_code=self.current_country_code)
                except ValueError as e:
                        raise tornado.web.HTTPError(400, "%s" % e) from e