Simon Broeng Jensen
d854ace89f
domain-model: move domain::model module to separate crate
2025-02-21 10:25:07 +01:00
Simon Broeng Jensen
5d2f168554
domain + server: introduce new AttributeValue enum
2025-02-19 15:48:27 +01:00
Simon Broeng Jensen
8285e21ebb
domain: rename AttributeValue to Attribute
...
Preparation for storing the actual types for each value, which
will repurpose the AttributeValue name.
2025-02-05 16:07:05 +01:00
Simon Broeng Jensen
4c6cfeee9e
server: remove deprecated fields from CreateUserRequest
...
The fields first_name, last_name, and avatar have all been moved
to regular attributes in the database, and are available through
the GraphQL API as such as well. This commit removes the legacy
fields for each on the internal CreateUserRequest type, leaving
these to only be updateable through attributes.
The fields are still available in the GraphQL CreateUserInput
type, preserving backwards compatiblity, and if set, they will
be used for the corresponding attribute values. If both fields
and attributes are set, the values given through attributes will
superceed the fields, and be used. This change also fixes a bug,
where creation of a user would fail if either of these attributes
were set as both attribute and field, as it would attempt to
insert the attribute twice, violating a unique constraint in the
database.
2025-02-05 15:42:06 +01:00
Simon Broeng Jensen
1b26859141
server: move domain::types to separate domain crate ( #1086 )
...
Preparation for using basic type definitions in other upcoming
modules, in particular for plugins.
2025-02-03 23:00:27 +01:00
Fabian May
417abc54e4
server: Cleanup log messages for ignored attribute warnings
...
Reduce log messages by remove line break and remove visible \n\ sequence
2025-02-03 22:52:15 +01:00
Simon Broeng Jensen
0799b6bc26
server: include preserved case in user attribute value search
...
Extends the generated UserRequestFilter with an OR'ed clause for
the attribute value in both it's original case and lowercased.
2025-01-22 10:37:04 +01:00
Simon Broeng Jensen
33fb59f2f7
server: Add support for querying GroupId with LDAP filters
2025-01-20 17:07:53 +01:00
Valentin Tolmer
0ddeab8caa
server: Fix schema migration from v8 for sqlite and postgres
...
Neither supports limits, but we can delete all the duplicate memberships and re-insert a single one
2024-11-21 23:34:37 +01:00
Valentin Tolmer
a190fe7ddf
server: return custom attributes when asked for all attributes
2024-10-26 19:07:08 +02:00
Valentin Tolmer
1f3f73585b
server: Add logging for password resets, add name for successful opaque logins
2024-09-26 22:51:34 +02:00
Valentin Tolmer
0c6a92a8fa
server: Clarify logging of login attempts and failures
2024-09-26 20:43:19 +02:00
Valentin Tolmer
65e2103365
server: Simplify the debug print of various structs
...
And use derive_more more liberally to simplify the impls
2024-09-08 00:43:58 +02:00
Valentin Tolmer
b1384818d2
server: Add a is_readonly attribute to the schema
2024-08-27 23:04:24 +02:00
Valentin Tolmer
09c5d9f925
server: Fix implementation of attribute present filter
...
Instead of just doing a schema check, this actually looks for users that have a value for this attribute.
2024-08-16 23:56:02 +02:00
Valentin Tolmer
fa9c503de7
server: Add support for memberOf with plain user names, relax hard errors
...
This should help when the client sends some invalid-looking queries as part of a bigger filter
2024-08-16 23:21:20 +02:00
Valentin Tolmer
6f46ffd1e4
clippy: new fixes
2024-06-16 12:18:46 +02:00
Valentin Tolmer
22623bfab1
server: Fix user search for multiple memberOf
2024-03-18 22:02:12 +01:00
Valentin Tolmer
a1eb708cf3
server: Add missing unique indices on lowercase email/group names, fix memberof lookup
2024-02-26 10:53:51 +01:00
Valentin Tolmer
4955b7fac1
server: Add support for the custom LDAP object classes in LDAP filters
2024-02-06 22:39:05 +01:00
Valentin Tolmer
646fe32645
server: Add support for custom LDAP object classes for users and groups
2024-02-05 22:51:02 +01:00
Valentin Tolmer
1c65cd115e
server: Fix panic due to database collation
...
When the database's collation is not "C", the DB order is not the same as the
Rust order. As such, asserting that the elements are in increasing order fails.
However, since both queries get the order from the database, they should be in
the same order.
With too many users, the query had a giant filter `IN (u1, u2, u3,
...)`. In PostgreSQL, we can pass the users as an array instead, but that
doesn't work with SQLite. Instead, we repeat the filter from the
previous query to get the same users/groups, as a subquery.
2024-02-02 15:39:16 +01:00
Valentin Tolmer
c2eed8909a
server: Only call expand_attributes at most once per request
2024-01-23 00:17:08 +01:00
Valentin Tolmer
e308a5e9a1
server: Add the attribute schema to the attributes in graphql
...
And make sure that we only request the schema once per top-level query
2024-01-21 23:25:57 +01:00
Valentin Tolmer
bd0a58b476
server: clean up the attributes, relax the substring filter conditions
...
This consolidates both user and group attributes in their map_{user,group}_attribute as the only point of parsing. It adds support for custom attribute filters for groups, and makes a SubString filter on an unknown attribute resolve to just false.
2024-01-17 23:44:25 +01:00
Valentin Tolmer
2ea17c04ba
server: Move the definition of UserId down to lldap_auth
2024-01-15 23:48:59 +01:00
Valentin Tolmer
8b7852bf1c
chore: clippy warnings
2024-01-13 18:32:58 +01:00
Valentin Tolmer
c4be7f5b6f
server: Serialize attribute values when searching
...
This should fix #763 and allow filtering by custom attribute values.
2024-01-13 13:37:46 +01:00
Valentin Tolmer
708d927e90
server: add a unique index to the memberships
2024-01-03 12:40:24 +01:00
Valentin Tolmer
0d48b7f8c9
server: add support for entryDN
2023-12-31 08:27:25 +01:00
Valentin Tolmer
f2b1e73929
server: Add a check for a changing private key
...
This checks that the private key used to encode the passwords has not
changed since last successful startup, leading to a corruption of all
the passwords. Lots of common scenario are covered, with various
combinations of key in a file or from a seed, set in the config file or
in an env variable or through CLI, and so on.
2023-12-29 15:37:52 +01:00
Valentin Tolmer
2c54ad895d
chore: clippy
2023-12-15 23:37:25 +01:00
Valentin Tolmer
272c84c574
server: make attributes names, group names and emails case insensitive
...
In addition, group names and emails keep their casing
2023-12-15 23:21:22 +01:00
Valentin Tolmer
829c3f2bb1
server: Prevent regular users from modifying non-editable attributes
2023-11-05 16:06:45 +01:00
Valentin Tolmer
c6ecf8d58a
server: Add graphql support for setting attributes
2023-10-22 16:34:15 +02:00
Valentin Tolmer
439fde434b
server: Add graphql support for creating/deleting attributes
2023-10-04 02:07:04 +02:00
Valentin Tolmer
2a5fd01439
server: add support for creating a group with attributes
2023-09-29 02:31:20 +02:00
Valentin Tolmer
2c398d0e8e
server: Add domain support for creating/deleting attributes
2023-09-29 02:31:20 +02:00
Valentin Tolmer
93e9985a81
server: rename SchemaBackendHandler -> ReadSchemaBackendHandler
2023-09-29 02:31:20 +02:00
Valentin Tolmer
3fadfb1944
server: add support for creating a user with attributes
2023-09-25 01:57:24 +02:00
Valentin Tolmer
81204dcee5
server: add support for updating user attributes
2023-09-25 01:57:24 +02:00
Valentin Tolmer
39a75b2c35
server: read custom attributes from LDAP
2023-09-15 15:26:18 +02:00
Valentin Tolmer
034794d58d
server: return user-defined attributes for groups in graphql
...
Part of #67
2023-09-14 13:02:45 +02:00
Valentin Tolmer
b54bf3c4d5
server: clean up database-mapped types
2023-09-11 17:09:49 +02:00
Valentin Tolmer
582abba793
server: clean up user query
...
With the new find_with_linked from sea_orm
2023-09-11 17:09:49 +02:00
Valentin Tolmer
94da42ffb9
server: small cleanup
2023-09-11 17:09:49 +02:00
Valentin Tolmer
08d3aef177
server: Update sea-orm, strum
2023-09-11 17:09:49 +02:00
Valentin Tolmer
134796aa9f
server: Switch tests to pretty_assertions
2023-09-10 22:29:32 +02:00
Valentin Tolmer
1598f096e9
server: Upgrade ldap3_proto
2023-09-10 22:29:32 +02:00
Valentin Tolmer
99ed6eface
server: Update tracing-forest and take advantage of the span fields
2023-09-10 22:29:32 +02:00