Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Hakaba Hitoyo
pleroma
Commits
7d9ddbe6
Verified
Commit
7d9ddbe6
authored
Dec 12, 2018
by
href
Browse files
Allow underscores in usernames.
Fixes #429.
parent
2592b3c8
Changes
4
Hide whitespace changes
Inline
Side-by-side
config/config.md
View file @
7d9ddbe6
...
...
@@ -63,6 +63,8 @@ This filter replaces the filename (not the path) of an upload. For complete obfu
*
"masto": Copy verbatim, as in Mastodon.
*
"noop": Don't copy the subject.
*
`always_show_subject_input`
: When set to false, auto-hide the subject field when it's empty.
*
`extended_nickname_format`
: Set to
`true`
to use extended local nicknames format (allows underscore). This will break federation with
older software for theses nicknames.
## :fe
This section is used to configure Pleroma-FE, unless
``:managed_config``
in
``:instance``
is set to false.
...
...
lib/pleroma/formatter.ex
View file @
7d9ddbe6
...
...
@@ -18,7 +18,7 @@ def parse_tags(text, data \\ %{}) do
def
parse_mentions
(
text
)
do
# Modified from https://www.w3.org/TR/html5/forms.html#valid-e-mail-address
regex
=
~r/@[a-zA-Z0-9.!#$%&'*+\/
=
?^
_
`
{
|
}
~
-
]
*
@
?[
a
-
zA
-
Z0
-
9
](
?:
[
a
-
zA
-
Z0
-
9
-
]{
0
,
61
}[
a
-
zA
-
Z0
-
9
])
?(?:
\
.
[
a
-
zA
-
Z0
-
9
](
?:
[
a
-
zA
-
Z0
-
9
-
]{
0
,
61
}[
a
-
zA
-
Z0
-
9
])
?)
*/
u
~r/@[a-zA-Z0-9.!#$%&'*+\/
=
?^
_
`
{
|
}
~
-
]
*
@
?[
a
-
zA
-
Z0
-
9
_
](
?:
[
a
-
zA
-
Z0
-
9
-
]{
0
,
61
}[
a
-
zA
-
Z0
-
9
])
?(?:
\
.
[
a
-
zA
-
Z0
-
9
](
?:
[
a
-
zA
-
Z0
-
9
-
]{
0
,
61
}[
a
-
zA
-
Z0
-
9
])
?)
*/
u
Regex
.
scan
(
regex
,
text
)
|>
List
.
flatten
()
...
...
lib/pleroma/user.ex
View file @
7d9ddbe6
...
...
@@ -11,6 +11,11 @@ defmodule Pleroma.User do
@type
t
::
%
__MODULE__
{}
@email_regex
~r/^[a-zA-Z0-9.!#$%&'*+\/
=
?^
_
`
{
|
}
~
-
]
+
@
[
a
-
zA
-
Z0
-
9
](
?:
[
a
-
zA
-
Z0
-
9
-
]{
0
,
61
}[
a
-
zA
-
Z0
-
9
])
?(?:
\
.
[
a
-
zA
-
Z0
-
9
](
?:
[
a
-
zA
-
Z0
-
9
-
]{
0
,
61
}[
a
-
zA
-
Z0
-
9
])
?)
*
$
/
@strict_local_nickname_regex
~r/^[a-zA-Z\d]+$/
@extended_local_nickname_regex
~r/^[a-zA-Z\d_]+$/
schema
"users"
do
field
(
:bio
,
:string
)
field
(
:email
,
:string
)
...
...
@@ -77,7 +82,6 @@ def user_info(%User{} = user) do
}
end
@email_regex
~r/^[a-zA-Z0-9.!#$%&'*+\/
=
?^
_
`
{
|
}
~
-
]
+
@
[
a
-
zA
-
Z0
-
9
](
?:
[
a
-
zA
-
Z0
-
9
-
]{
0
,
61
}[
a
-
zA
-
Z0
-
9
])
?(?:
\
.
[
a
-
zA
-
Z0
-
9
](
?:
[
a
-
zA
-
Z0
-
9
-
]{
0
,
61
}[
a
-
zA
-
Z0
-
9
])
?)
*
$
/
def
remote_user_creation
(
params
)
do
params
=
params
...
...
@@ -117,7 +121,7 @@ def update_changeset(struct, params \\ %{}) do
struct
|>
cast
(
params
,
[
:bio
,
:name
,
:avatar
])
|>
unique_constraint
(
:nickname
)
|>
validate_format
(
:nickname
,
~r/^[a-zA-Z\d]+$/
)
|>
validate_format
(
:nickname
,
local_nickname_regex
()
)
|>
validate_length
(
:bio
,
max:
5000
)
|>
validate_length
(
:name
,
min:
1
,
max:
100
)
end
...
...
@@ -134,7 +138,7 @@ def upgrade_changeset(struct, params \\ %{}) do
struct
|>
cast
(
params
,
[
:bio
,
:name
,
:follower_address
,
:avatar
,
:last_refreshed_at
])
|>
unique_constraint
(
:nickname
)
|>
validate_format
(
:nickname
,
~r/^[a-zA-Z\d]+$/
)
|>
validate_format
(
:nickname
,
local_nickname_regex
()
)
|>
validate_length
(
:bio
,
max:
5000
)
|>
validate_length
(
:name
,
max:
100
)
|>
put_embed
(
:info
,
info_cng
)
...
...
@@ -172,7 +176,7 @@ def register_changeset(struct, params \\ %{}) do
|>
validate_confirmation
(
:password
)
|>
unique_constraint
(
:email
)
|>
unique_constraint
(
:nickname
)
|>
validate_format
(
:nickname
,
~r/^[a-zA-Z\d]+$/
)
|>
validate_format
(
:nickname
,
local_nickname_regex
()
)
|>
validate_format
(
:email
,
@email_regex
)
|>
validate_length
(
:bio
,
max:
1000
)
|>
validate_length
(
:name
,
min:
1
,
max:
100
)
...
...
@@ -861,4 +865,12 @@ defp normalize_tags(tags) do
|>
List
.
flatten
()
|>
Enum
.
map
(
&
String
.
downcase
(
&1
))
end
defp
local_nickname_regex
()
do
if
Pleroma
.
Config
.
get
([
:instance
,
:extended_nickname_format
])
do
@extended_local_nickname_regex
else
@strict_local_nickname_regex
end
end
end
test/formatter_test.exs
View file @
7d9ddbe6
...
...
@@ -109,13 +109,13 @@ test "turning urls into links" do
describe
"add_user_links"
do
test
"gives a replacement for user links"
do
text
=
"@gsimg According to @archaeme, that is @daggsy. Also hello @archaeme@archae.me"
text
=
"@gsimg According to @archa
_
eme
_
, that is @daggsy. Also hello @archaeme@archae.me"
gsimg
=
insert
(
:user
,
%{
nickname:
"gsimg"
})
archaeme
=
insert
(
:user
,
%{
nickname:
"archaeme"
,
info:
%
Pleroma
.
User
.
Info
{
source_data:
%{
"url"
=>
"https://archeme/@archaeme"
}}
nickname:
"archa
_
eme
_
"
,
info:
%
Pleroma
.
User
.
Info
{
source_data:
%{
"url"
=>
"https://archeme/@archa
_
eme
_
"
}}
})
archaeme_remote
=
insert
(
:user
,
%{
nickname:
"archaeme@archae.me"
})
...
...
@@ -130,7 +130,7 @@ test "gives a replacement for user links" do
expected_text
=
"<span><a data-user='
#{
gsimg
.
id
}
' class='mention' href='
#{
gsimg
.
ap_id
}
'>@<span>gsimg</span></a></span> According to <span><a data-user='
#{
archaeme
.
id
}
' class='mention' href='
#{
"https://archeme/@archaeme"
}
'>@<span>archaeme</span></a></span>, that is @daggsy. Also hello <span><a data-user='
#{
}
' class='mention' href='
#{
"https://archeme/@archa
_
eme
_
"
}
'>@<span>archa
_
eme
_
</span></a></span>, that is @daggsy. Also hello <span><a data-user='
#{
archaeme_remote
.
id
}
' class='mention' href='
#{
archaeme_remote
.
ap_id
}
'>@<span>archaeme</span></a></span>"
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment