user can choose name
This commit is contained in:
parent
0e0a11dfce
commit
d61c402aea
|
@ -224,6 +224,13 @@ class User(db.Model, ModelMixin, UserMixin):
|
|||
list(set(all_gen_emails).difference(set([suggested_gen_email]))),
|
||||
)
|
||||
|
||||
def suggested_names(self) -> (str, [str]):
|
||||
"""return suggested name and other name choices """
|
||||
|
||||
other_name = convert_to_id(self.name)
|
||||
|
||||
return self.name, [other_name, "Anonymous", "whoami"]
|
||||
|
||||
|
||||
class ActivationCode(db.Model, ModelMixin):
|
||||
"""For activate user account"""
|
||||
|
@ -433,7 +440,10 @@ class ClientUser(db.Model, ModelMixin):
|
|||
|
||||
for scope in self.client.get_scopes():
|
||||
if scope == Scope.NAME:
|
||||
res[Scope.NAME.value] = self.user.name
|
||||
if self.name:
|
||||
res[Scope.NAME.value] = self.name
|
||||
else:
|
||||
res[Scope.NAME.value] = self.user.name
|
||||
elif scope == Scope.AVATAR_URL:
|
||||
if self.user.profile_picture_id:
|
||||
res[Scope.AVATAR_URL.value] = self.user.profile_picture.get_url()
|
||||
|
|
|
@ -76,15 +76,26 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-4">
|
||||
<div class="row mt-4 md-4">
|
||||
<div class="col-md-3 text-left">
|
||||
<label>Name</label>
|
||||
<label style="padding-top: .5rem">Name</label>
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
{{ current_user.name }}
|
||||
<select class="custom-select custom-select" name="suggested-name">
|
||||
<option selected value="{{ suggested_name }}">{{ suggested_name }}</option>
|
||||
{% for name in other_names %}
|
||||
<option value="{{ name }}">{{ name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
||||
<div class="mt-2">OR</div>
|
||||
<div class="mt-2">
|
||||
<input class="form-control" name="custom-name">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% if current_user.profile_picture_id %}
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-3 text-right">
|
||||
|
|
|
@ -65,6 +65,7 @@ def authorize():
|
|||
if request.method == "GET":
|
||||
if current_user.is_authenticated:
|
||||
suggested_email, other_emails, email_suffix = None, [], None
|
||||
suggested_name, other_names = None, []
|
||||
|
||||
# user has already allowed this client
|
||||
client_user: ClientUser = ClientUser.get_by(
|
||||
|
@ -76,6 +77,7 @@ def authorize():
|
|||
user_info = client_user.get_user_info()
|
||||
else:
|
||||
suggested_email, other_emails = current_user.suggested_emails()
|
||||
suggested_name, other_names = current_user.suggested_names()
|
||||
email_suffix = random_string(6)
|
||||
|
||||
return render_template(
|
||||
|
@ -86,6 +88,8 @@ def authorize():
|
|||
Scope=Scope,
|
||||
suggested_email=suggested_email,
|
||||
personal_email=current_user.email,
|
||||
suggested_name=suggested_name,
|
||||
other_names=other_names,
|
||||
other_emails=other_emails,
|
||||
email_suffix=email_suffix,
|
||||
EMAIL_DOMAIN=EMAIL_DOMAIN,
|
||||
|
@ -115,6 +119,9 @@ def authorize():
|
|||
custom_email_prefix = request.form.get("custom-email-prefix")
|
||||
chosen_email = request.form.get("suggested-email")
|
||||
|
||||
suggested_name = request.form.get("suggested-name")
|
||||
custom_name = request.form.get("custom-name")
|
||||
|
||||
gen_email = None
|
||||
if custom_email_prefix:
|
||||
# check if user can generate custom email
|
||||
|
@ -143,6 +150,23 @@ def authorize():
|
|||
if gen_email:
|
||||
client_user.gen_email_id = gen_email.id
|
||||
|
||||
if custom_name:
|
||||
LOG.d(
|
||||
"use custom name %s for user %s client %s",
|
||||
custom_name,
|
||||
current_user,
|
||||
client,
|
||||
)
|
||||
client_user.name = custom_name
|
||||
elif suggested_name != current_user.name:
|
||||
LOG.d(
|
||||
"use another name %s for user %s client %s",
|
||||
custom_name,
|
||||
current_user,
|
||||
client,
|
||||
)
|
||||
client_user.name = suggested_name
|
||||
|
||||
db.session.flush()
|
||||
LOG.d("create client-user for client %s, user %s", client, current_user)
|
||||
|
||||
|
|
Loading…
Reference in New Issue