<feed xmlns='http://www.w3.org/2005/Atom'>
<title>finserv/password_test.go, branch auth</title>
<subtitle>Personal finances server</subtitle>
<id>https://cgit.xengineering.eu/finserv/atom/password_test.go?h=auth</id>
<link rel='self' href='https://cgit.xengineering.eu/finserv/atom/password_test.go?h=auth'/>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/finserv/'/>
<updated>2026-06-27T19:21:45Z</updated>
<entry>
<title>Switch Register() and Authenticate() to sql.Tx</title>
<updated>2026-06-27T19:21:45Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-06-27T19:21:45Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/finserv/commit/?id=132990e985751e40c263224a62983c8013409a36'/>
<id>urn:sha1:132990e985751e40c263224a62983c8013409a36</id>
<content type='text'>
Using sql.Tx (database transactions) instead of a plain database has the
advantage that the caller can wrap multiple library calls into one
transaction.

This guarantees that no database entries change between the library
calls which is critical to prevent race conditions.
</content>
</entry>
<entry>
<title>Add `register` HTTP handler</title>
<updated>2026-06-21T09:55:44Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-06-21T09:49:42Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/finserv/commit/?id=7ab03af3f662c90b1868f5ef14e70f443b2d91cd'/>
<id>urn:sha1:7ab03af3f662c90b1868f5ef14e70f443b2d91cd</id>
<content type='text'>
This allows users to register.
</content>
</entry>
<entry>
<title>Fix wrong error message</title>
<updated>2026-06-21T08:53:35Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-06-21T08:53:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/finserv/commit/?id=383cf7a521f7bfcdf552cd18ea9919930af2e9cf'/>
<id>urn:sha1:383cf7a521f7bfcdf552cd18ea9919930af2e9cf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add integration test TestRegisterAuthenticate</title>
<updated>2026-06-20T15:12:18Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-06-20T15:10:09Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/finserv/commit/?id=bbf9efa82e96761f93b591e1a159ef7afb1f05c0'/>
<id>urn:sha1:bbf9efa82e96761f93b591e1a159ef7afb1f05c0</id>
<content type='text'>
This makes sure the implementations of Register() and Authenticate() are
compatible.
</content>
</entry>
<entry>
<title>Add Authenticate()</title>
<updated>2026-06-20T15:12:18Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-06-20T15:07:47Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/finserv/commit/?id=a5c8467bbb14731847cdf8c37cbde0c91827022a'/>
<id>urn:sha1:a5c8467bbb14731847cdf8c37cbde0c91827022a</id>
<content type='text'>
This function validates a username and password against the database.
</content>
</entry>
<entry>
<title>Add Register()</title>
<updated>2026-06-20T15:10:39Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2026-06-05T20:45:01Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/finserv/commit/?id=0143b6e4cb7c31abee7d71a2dbd713abcc98936d'/>
<id>urn:sha1:0143b6e4cb7c31abee7d71a2dbd713abcc98936d</id>
<content type='text'>
This function creates a new user and sets the username and bcrypt-hashed
password.
</content>
</entry>
</feed>
