[โ€“] [S] 1 point 10 months ago* (1 child)

simplelogin provides email aliases? Using a matrix ID doesn't solve spam issues. The service could be hacked and all matrix IDs leaked and it would be the same as your email address being leaked.
So, an equivalent service or feature would have to be created for matrix that allows users to generate aliases for use with different services.

rambling of other (non) solutionOoor, users could sign up with room IDs! That would actually solve the problem. As user could create a private room, copy the ID into the signup form, and the service would send messages into the room. It could save the list of participants in the room, i.e your matrix ID though ๐Ÿค” So not really a solution.

Good question! Thank you for asking. This would indeed require a solution and aliases built into a matrix server would be the best option. Maybe... uh... @JadedBlueEyes@programming.dev as a matrix server developer could think of something?

  • source
  • parent
  • context
  • [โ€“] [S] 3 points 10 months ago (1 child)

    If the existing service doesn't want to use matrix IDs and insists on using email, then there is a matrix-email bridge (postmoogle). If the matrix server has that installed, it will be communicating with email and the service won't have to do anything. Of course, it doesn't make the communication more secure.

    The service could also host their own matrix server with postmoogle, send an email with some format to it and a bot on the matrix server then sends it to the matrix ID of the user, but that's way more complicated than just adding some code to support communicating via the matrix protocol outright. I did it in about 50 lines (set up the client, create an encrypted chat room, send a message).

  • source
  • parent
  • context
  • [โ€“] [S] 4 points 10 months ago

    Thanks :)

    Email is just the communication channel. The relevant code for sending the activation code is just a few lines. Though, there is of course more work to be done for full integration:

    • validation of the matrix ID in the frontend (probably a regex?)
    • storing encryption keys and room IDs for conversations in order to continue sending messages in to the same encrypted room with users
    • adding a mechanism to select either email or matrix for users and allowing secondary matrix IDs (should the user want that)

    It should be possible to have this in more projects, but it would probably take a big player to recognise a value (encrypted communication with their users) and adopt it.

  • source
  • parent
  • context
  • [โ€“] [S] 5 points 10 months ago (1 child)

    Hey @JadedBlueEyes@programming.dev, are you talking about Synapse's SSO implementation? I've had to deal with SAML before and it wasn't a particularly joyful experience but since synapse makes it possible, it would indeed be a useful contribution to Forgejo too! Maybe it's just a question of providing documentation and some example configs for Forgejo to make instance owners aware of the Synapse SSO capabilities.

    The reason I went with this is implementation is because email just seems to be a notification and communication channel used by other services. Giving the additional option of using Matrix could be easier for devs than figuring out SAML or OIDC.

    Question about continuwuity: how can I create an admin user? It might be missing from the doc and the docker image doesn't have a register_new_matrix_user script.

  • source
  • parent
  • context
  •  

    I wrote a proof of concept that allows the user to sign up to a service using their matrix ID e.g @user:server.test. The user then receives an activation link in an encrypted room from the service. It worked quite easily and within 2 days of fumbling around with the matrix SDK in python and FastAPI, here we are.

    This has been in my head for a while and I just wanted to see if it's possible (the proof is in the pudding code). Emails are insecure and national services are starting to implement communication services on top of matrix. It's a not inconceivable that citizens might get a government issued Matrix account and communicate safely with the government over a secure protocol. Why not allow other services to do the same?

    Imagine if instead of providing your email address for signing up to services you used matrix instead. Your host wouldn't be able to read your messages and it could replace things like 2FA codes over SMS, activation links in emails, or health documents from your doctor's CMS in your email inbox.

    Should there be enough time, I'd like to try and contribute this login method to forgejo (the software behind codeberg that's hosting this repository), but let's see. First it would take learning go ๐Ÿ˜…

     

    Solution: the scrollable container was also scrollable horizontally! I had to disable that and it finally expanded to the size of its contents.

    Hi,

    I found out Godot can be (ab)used to make a cross platform GUIs for applications and would like to make a window with a main container on the left and scrollable feed on the right. The scrollable feed should expand horizontally (max 20% of available space) depending on the size of the contents it has.

    I've split the main GUI using an HBoxContainer with a VBoxContainer on the left (mainContainer) and a ScrollContainer (feedScroll) on the right with a VBoxContainer in that. When setting "Expand = true" on mainContainer, it just pushes aside the feedScroll which then has width of 0. The buttons have a min size, so I expected them to widen the vBoxContainer and succeedingly the feedScroll. Alas, the VBoxContainer does have the right width (as you can see in the image), but the feedScroll doesn't have a width.

    Below is the scene.

    gui.tscn

    [gd_scene load_steps=3 format=3 uid="uid://c1jga0ql8cbyx"]
    
    [ext_resource type="Script" uid="uid://ceyrteq5kukei" path="res://button.gd" id="1_80edf"]
    
    [sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_k6omp"]
    
    [node name="gui" type="Control"]
    layout_mode = 3
    anchors_preset = 15
    anchor_right = 1.0
    anchor_bottom = 1.0
    grow_horizontal = 2
    grow_vertical = 2
    
    [node name="rootMargin" type="MarginContainer" parent="."]
    material = SubResource("CanvasItemMaterial_k6omp")
    layout_mode = 1
    anchors_preset = 15
    anchor_right = 1.0
    anchor_bottom = 1.0
    grow_horizontal = 2
    grow_vertical = 2
    theme_override_constants/margin_left = 10
    theme_override_constants/margin_top = 10
    theme_override_constants/margin_right = 10
    theme_override_constants/margin_bottom = 10
    
    [node name="HBoxContainer" type="HBoxContainer" parent="rootMargin"]
    layout_mode = 2
    
    [node name="mainContent" type="VBoxContainer" parent="rootMargin/HBoxContainer"]
    layout_mode = 2
    size_flags_horizontal = 3
    
    [node name="feedScroll" type="ScrollContainer" parent="rootMargin/HBoxContainer"]
    layout_mode = 2
    
    [node name="VBoxContainer" type="VBoxContainer" parent="rootMargin/HBoxContainer/feedScroll"]
    layout_mode = 2
    size_flags_vertical = 3
    theme_override_constants/separation = 10
    
    [node name="Button" type="Button" parent="rootMargin/HBoxContainer/feedScroll/VBoxContainer"]
    custom_minimum_size = Vector2(200, 30)
    layout_mode = 2
    size_flags_horizontal = 4
    size_flags_vertical = 4
    text = "I have a lot of text"
    script = ExtResource("1_80edf")
    
    [node name="Button2" type="Button" parent="rootMargin/HBoxContainer/feedScroll/VBoxContainer"]
    layout_mode = 2
    text = "This is a marginal text"
    
    [node name="Button3" type="Button" parent="rootMargin/HBoxContainer/feedScroll/VBoxContainer"]
    layout_mode = 2
    text = "I have more text in here"
    
    [node name="Button4" type="Button" parent="rootMargin/HBoxContainer/feedScroll/VBoxContainer"]
    layout_mode = 2
    text = "Quite a big button lad"
    
    [connection signal="pressed" from="rootMargin/HBoxContainer/feedScroll/VBoxContainer/Button" to="rootMargin/HBoxContainer/feedScroll/VBoxContainer/Button" method="_on_pressed"]
    
    

    Help would be appreciated. Thanks