9 4a5e4655 2023-07-06 o func (c *Client) Login(name, password string) error {
11 4a5e4655 2023-07-06 o if err := c.init(); err != nil {
16 4a5e4655 2023-07-06 o params := map[string]interface{}{
17 4a5e4655 2023-07-06 o "username_or_email": name,
18 4a5e4655 2023-07-06 o "password": password,
20 4a5e4655 2023-07-06 o resp, err := c.post("/user/login", params)
21 4a5e4655 2023-07-06 o if err != nil {
24 4a5e4655 2023-07-06 o defer resp.Body.Close()
25 4a5e4655 2023-07-06 o if resp.StatusCode != http.StatusOK {
26 4a5e4655 2023-07-06 o return fmt.Errorf("remote status %s: %w", resp.Status, decodeError(resp.Body))
29 4a5e4655 2023-07-06 o var response struct {
32 4a5e4655 2023-07-06 o if err := json.NewDecoder(resp.Body).Decode(&response); err != nil {
33 4a5e4655 2023-07-06 o return fmt.Errorf("decode login response: %w", err)
35 4a5e4655 2023-07-06 o c.authToken = response.JWT
39 99ed05e3 2023-10-15 o func (c *Client) Authenticated() bool {
40 99ed05e3 2023-10-15 o return c.authToken != ""