MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / EnsureProjectUser

Function EnsureProjectUser

cmd/cql-proxy/model/project_user.go:206–294  ·  view source on GitHub ↗

EnsureProjectUser add/update user info to project database.s

(db *gorp.DbMap, provider string,
	uid string, name string, email string, extra gin.H,
	enableSignUp bool, signUpState ProjectUserState)

Source from the content-addressed store, hash-verified

204
205// EnsureProjectUser add/update user info to project database.s
206func EnsureProjectUser(db *gorp.DbMap, provider string,
207 uid string, name string, email string, extra gin.H,
208 enableSignUp bool, signUpState ProjectUserState) (
209 u *ProjectUser, err error) {
210
211 // find by uid
212 err = db.SelectOne(&u,
213 `SELECT * FROM "____user" WHERE "provider" = ? AND "provider_uid" = ? LIMIT 1`,
214 provider, uid)
215 exists := true
216 now := time.Now().Unix()
217
218 if err != nil {
219 // find by provider and email or provider and name
220 switch provider {
221 case "weibo":
222 err = db.SelectOne(&u,
223 `SELECT * FROM "____user" WHERE "provider" = ? AND "name" = ? AND "state" = ? LIMIT 1`,
224 provider, name, ProjectUserStatePreRegistered)
225 default:
226 // google, facebook, twitter, etc.
227 err = db.SelectOne(&u,
228 `SELECT * FROM "____user" WHERE "provider" = ? AND "email" = ? AND "state" = ? LIMIT 1`,
229 provider, email, ProjectUserStatePreRegistered)
230 }
231 }
232
233 if err != nil && !enableSignUp {
234 // new user, not even pre-registered
235 err = errors.New("user does not exists, sign up disabled")
236 return
237 }
238
239 if err != nil {
240 u = &ProjectUser{
241 Name: name,
242 Email: email,
243 State: signUpState,
244 Provider: provider,
245 ProviderUID: uid,
246 Extra: extra,
247 }
248
249 exists = false
250 err = nil
251 } else {
252 if u.State == ProjectUserStateDisabled {
253 // disabled
254 err = errors.New("account is disabled")
255 return
256 }
257
258 u.LastLogin = now
259 u.Name = name
260 u.Email = email
261 u.Extra = extra
262 }
263

Callers 1

Calls 3

InsertMethod · 0.80
NewMethod · 0.65
UpdateMethod · 0.65

Tested by

no test coverage detected