taskrambler  0.1.9
Web server and task management solution.
create_user.c
Go to the documentation of this file.
1 /**
2  * \file
3  *
4  * \author Georg Hopp
5  *
6  * \copyright
7  * Copyright © 2013 Georg Hopp
8  *
9  * This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
21  */
22 
23 #define _GNU_SOURCE
24 
25 #include <stdio.h>
26 #include <stdlib.h>
27 #include <sys/types.h>
28 
29 #include "class.h"
30 #include "auth.h"
31 #include "user.h"
32 #include "uuid.h"
33 #include "storage/storage.h"
35 
36 #include "interface/serializable.h"
37 #include "interface/indexable.h"
38 
39 #include "utils/memory.h"
40 #include "commons.h"
41 
42 Uuid
44  Application this,
45  Credential cred,
46  User user)
47 {
48  char * user_serialized;
49  size_t nuser_serialized;
50  Uuid index;
51 
52  index = indexUuid(user, this->user_namespace);
53  serialize(user, (unsigned char **)&user_serialized, &nuser_serialized);
54 
55  if (SPR_OK != storagePut(
56  this->users,
57  (char *)(index->uuid).value,
58  sizeof((index->uuid).value),
59  user_serialized,
60  nuser_serialized))
61  {
62  return uuidZero;
63  }
64 
65  MEM_FREE(user_serialized);
66 
67  if (! applicationUpdatePassword(this, cred, user)) {
68  /**
69  * \todo
70  * error handling is missing here
71  */
73  this->users,
74  (char *)(index->uuid).value,
75  sizeof((index->uuid).value));
76 
77  return uuidZero;
78  }
79 
80  return index;
81 }
82 
83 // vim: set ts=4 sw=4:
#define MEM_FREE(seg)
Definition: memory.h:28
int storageDelete(Storage, char *, size_t)
int applicationUpdatePassword(Application, Credential, User)
StoragePutResult storagePut(Storage, char *, size_t, char *, size_t)
Definition: storage/put.c:34
Uuid uuidZero
Uuid applicationCreateUser(Application this, Credential cred, User user)
Definition: create_user.c:43
void serialize(void *, unsigned char **, size_t *)
Definition: serializable.c:32
Uuid indexUuid(void *, Uuid)
Definition: indexable.c:33